我在这里阅读了很多关于子集数据的主题,但我还没有找到任何可以回答我关于时间序列数据集子集的具体问题的内容。
我想做的是找到满足条件的行,然后删除满足条件的第一行,以及后面的所有行(不管是否满足条件)。
示例数据集:
AnimalID Latitude Longitude Speed Date
99B 50.86190 -129.0875 5.6 2015-05-14 21:26:00
99B 50.86170 -129.0875 0.6 2015-05-14 21:32:00
99B 50.86150 -129.0810 0.5 2015-05-14 21:33:00
99B 50.86140 -129.0800 0.3 2015-05-14 21:40:00
要找到满足条件的行,我有代码
DT[Speed < 0.8 & Date > as.POSIXct("2015-05-14 21:30:00"), by=AnimalID]
但是,我不知道如何删除这些行。
非常感谢
最佳答案
怎么样
require(data.table)
dt = data.table(
AnimalID = rep('99B', 4),
Latitude = c(50.86190,50.86170,50.86150,50.86140),
Longitude = c(-129.0875,-129.0875,-129.0810,-129.0800),
Speed = c(5.6,0.6,0.5,0.3),
Date = as.POSIXct(c('2015-05-14 21:26:00', '2015-05-14 21:32:00', '2015-05-14 21:33:00', '2015-05-14 21:40:00')))
dt[, cond := Speed < 0.8 & Date > as.POSIXct("2015-05-14 21:30:00")]
dt[, cond_cumsum := cumsum(cond)] # everything > 0 follows a row that met the condition
dt_sub = dt[cond_cumsum == 0]
关于r - data.table:满足条件后删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663500/