2015-04-26 197 views
0

我在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?

乾杯!

回答

0

你可以這樣做:

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

這是驚人的!非常感謝!我會爲我的無知道歉,但是如何保存過濾的數據集以進一步分析? – Colin

+0

很高興幫助。如果它回答您的問題,請考慮點擊左側的複選標記。爲了將結果保存在一個變量中,你可以做'df2 <- df %>%filter(!(錯誤== 1 | lag(錯誤== 1,default = F)))',然後在需要時簡單地調用'df2'。 –

+0

考慮它檢查。再次感謝你! – Colin

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,]