根据条件提取上一行值

时间:2017-04-03 01:03:04

标签: r dataset data-science

要分析纸张的某些数据,我需要在满足条件之前提取整行。

例如,我有一个错误列和一个响应时间列

Error    ResponseTime
0        0.22
0        0.28
1        0.89
0        0.92
1        0.21

期望的输出

Error    ResponseTime
0        0.28
0        0.92

所以如果错误== 1 提取上一行并将其放入新的数据帧中。

我尝试使用动物园图书馆,但我无法让它工作。

我尝试了这个解决方案:

Dfa1test <- Dfa1test[c(FALSE, head(Dfa1test$error, -1) == 1), , drop = FALSE]

最后一个解决方案的问题是我得到行+ 1而不是行-1。

我试图找到其他解决方案,但我没有接近我想要的输出。

1 个答案:

答案 0 :(得分:0)

以下是使用data.table

的选项
library(data.table)
setDT(df1)[df1[,.I[which(Error==1)-1]]]
#   Error ResponseTime
#1:     0         0.28
#2:     0         0.92

当当前元素为1时,我们只需要'错误'中前一个元素为0的行

setDT(df)[df[, .I[which(shift(Error, fill=999)==0 & Error==1)-1]]]

注意:在此示例中,它们都给出相同的结果