【发布时间】:2016-12-04 10:44:18
【问题描述】:
我在这里阅读了很多关于子集数据的主题,但我没有找到任何可以回答我关于子集时间序列数据集的具体问题的任何内容。
我想做的是找到满足条件的行,然后删除满足条件的第一行,以及之后的所有行(不管它们是否满足条件)。
一个示例数据集:
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]
但是,我不知道如何删除这些行。
非常感谢
【问题讨论】:
-
你有
AnimalID作为分组变量吗? -
尝试使用 dput 发布您的示例,以便其他人可以尝试,如果您认为相关,请添加 data.table 标记。无需在标题中写“标签”。
-
如果分组不是问题,
DT[1:which(Speed < 0.8 & Date > as.POSIXct("2015-05-14 21:30:00")[1]]可能会起作用。 -
@lmo 他们也需要删除符合条件的obs。
-
@Frank OK
DT[1:(which(Speed < 0.8 & Date > as.POSIXct("2015-05-14 21:30:00")[1]-1)]略有改动。
标签: r data.table subset