2013-05-02 60 views
0

我在這裏看到類似的問題,但找不到任何幫助。刪除具有特定條件的數據幀的行

我有這樣一個DF:

df <- data.frame(CSF1=c(-9,-9,-9,-9), CSF2=c(-9,-1,-9,-9), 
       D13S1=c(-9,-9,11,11), D13S2=c(-9,-9,11,12)) 

     CSF1 CSF2 D13S1 D13S2 
10398  -9 -9 -9 -9     
10398  -9 -1 -9 -9        
20177  -9 -9 11 11     
20361  -9 -9 11 12   

我想和值刪除所有行-9或-1所有列,像第2行。

謝謝!

回答

2

試試這個(由阿倫編輯佔多夫的職位):

df[rowSums(df == -1 | df == -9, na.rm = TRUE) != ncol(df), ] 
## CSF1 CSF2 D13S1 D13S2 
## 3 -9 -9 11 11 
## 4 -9 -9 11 12 

(df == -1 | df == -9)會給你的邏輯矩陣。由於TRUE被評估爲1,所以rowSums會給你每行TRUEna.rm=TRUE用於確保不會忽略包含NA的行(請參閱Dov的帖子)。將結果行號用於子集df

3

我要補充的是which函數似乎不是必須的。刪除它會得到相同的結果。

在丟失數據的情況下,您會遇到第二個問題。如果您將一個NA添加到第三行(使用df[3,4] <- NA來嘗試),那麼上述解決方案的輸出將忽略第三行,而不管其他條目的值如何。我不會建議替代方案,因爲這對您的數據集可能不是問題。

+0

多夫,我想你應該建議替代品。這就是要點(得到*最佳答案):)。 – Arun 2013-05-02 06:50:25

+0

(+1)替代品總是很好的知道 – Nishanth 2013-05-02 07:31:34