2015-05-07 39 views
2

所以我試圖根據具有兩個或多個0值的條件過濾data.frame的行。在多項式條件測試中過濾R中的行

mir Target_2 Score value_2 Blank 
1 BERKSHIRE BERKS 77 0 0 
2 FRANKLIN FRANK 81 5 0 
3 HAMPDEN  DEN  69 4 0 
4 HAMPSHIRE HAMP 75 0 0 
5 MIDDLESEX SEX  47 0 0 
6 WORCHESTER SEX  0 2 0 
7 WORCHESTER WOR  64 0 0 
8 BERKSHIR BERKS 0 3 0 
9 HAMPHIRE HAMP 0 4 0 

上面是一個示例數據框,我需要幫助返回行中只有一個零值的值。爲了這個例子的目的,我添加了一個全零的列,但是我的數據不會那麼幹淨。所以我想如果有一個條件如下圖所示:

If col[value] == 0: 
     if col+1[value] == 0: 
      filter 
     elif col+2[value] == 0: 
      filter 
     elif col+n[value] == 0: 
      filter 

我想應用到測試表函數的輸出:

mir Target_2 Score value_2 Blank 
    2 FRANKLIN FRANK 81 5 0 
    3 HAMPDEN  DEN  69 4 0 
+0

問題是重複的,但我相信我問我的問題的方式更加簡潔和可搜索。乾杯,科迪 –

回答

2

這是一種方式:

> df[apply(df[3:5], 1, function(x) table(x)['0']==1), ] 
     mir Target_2 Score value_2 Blank 
2 FRANKLIN FRANK 81  5  0 
3 HAMPDEN  DEN 69  4  0 

它使用功能table來計算每個數字的頻率。如果0的頻率爲1,則該行返回TRUE。然後這用於相應地對子集df進行子集化。

+1

完美!乾杯,科迪 –

+1

很高興我可以幫助:)! – LyzandeR