要分析纸张的某些数据,我需要在满足条件之前提取整行。
例如,我有一个错误列和一个响应时间列
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。
我试图找到其他解决方案,但我没有接近我想要的输出。
答案 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]]]
注意:在此示例中,它们都给出相同的结果