r - data.table:满足条件后删除所有行

标签 r data.table subset

我在这里阅读了很多关于子集数据的主题,但我还没有找到任何可以回答我关于时间序列数据集子集的具体问题的内容。

我想做的是找到满足条件的行,然后删除满足条件的第一行,以及后面的所有行(不管是否满足条件)。

示例数据集:

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/

相关文章:

read.csv 将空字符列转换为 NA

r - 为 R 数据帧中的记录 block 创建序列号

r - 从列表列表中提取某些元素

arrays - mongodb查询数组的子集

r - 第二级 R 函数中的子集化

r - 为什么 caret preProcess 插补方法会自动缩放数据

r - 如何使用trace将S4通用函数单步执行到实际调度的方法?

r - 在R中的for循环中向列表中添加元素

r - R optim 实现中的 Brent 方法始终返回相同的局部最小值

r - 如何最好地将 data.table 的一列与同一 data.table 的另一列连接起来?