根据条件删除特定列

时间:2015-04-26 02:28:17

标签: r

我在R中有一个数据集,其中一列指示任务上的错误:0 =没有错误。 1 =错误。

如何删除错误列显示1(错误)和后续行(即使它是0)的行?

示例:

  id part block response       time wrong
1  1    1     1      307 2015-04-26     0
2  2    1     1      291 2015-05-03     1
3  3    1     1      310 2015-05-10     0

如何删除第2行和第3行?

干杯!

2 个答案:

答案 0 :(得分:0)

  1. 首先制作样本数据集:

    df <- data.frame(id=1:10, error=sample(0:1, size = 10, replace = T, prob = c(0.7,0.3)))
    
  2. 查找标记错误的行的行数,以及后续行, 无论他们的错误状态如何。

    to_remove <- c(which(df$error == 1), which(df$error == 1)+1)
    
  3. 确保行号不大于df中的行数。

    to_remove <- to_remove[!(to_remove>nrow(df))]
    
  4. 删除线条。

    df <- df[-to_remove,]
    

答案 1 :(得分:0)

你可以这样做:

library(dplyr)
df %>% filter(!(wrong == 1 | lag(wrong == 1, default = F)))