2012-08-03 4 views
11

1行あたりの累計数について質問があります。私はこのようなデータフレームを持っています:1行あたりの0の数をカウントし、n個以上のゼロを含む行を削除します。

a = c(1,2,3,4,5,6,0,2,5) 
b = c(0,0,0,2,6,7,0,0,0) 
c = c(0,5,2,7,3,1,0,3,0) 
d = c(1,2,6,3,8,4,0,4,0) 
e = c(0,4,6,3,8,4,0,6,0) 
f = c(0,2,5,5,8,4,2,7,4) 
g = c(0,8,5,4,7,4,0,0,0) 
h = c(1,3,6,7,4,2,0,4,2) 
i = c(1,5,3,6,3,7,0,5,3) 
j = c(1,5,2,6,4,6,8,4,2) 

DF<- data.frame(a=a,b=b,c=c,d=d,e=e,f=f,g=g,h=h,i=i,j=j) 

    a b c d e f g h i j 
1 1 0 0 1 0 0 0 1 1 1 
2 2 0 5 2 4 2 8 3 5 5 
3 3 0 2 6 6 5 5 6 3 2 
4 4 2 7 3 3 5 4 7 6 6 
5 5 6 3 8 8 8 7 4 3 4 
6 6 7 1 4 4 4 4 2 7 6 
7 0 0 0 0 0 2 0 0 0 8 
8 2 0 3 4 6 7 0 4 5 4 
9 5 0 0 0 0 4 0 2 3 2 

私は行ごとにゼロの数を数えたいと思います。 1行あたりの0の数が特定の数、たとえば4より大きい場合は、完全な行を削除したいと考えています。結果のデータフレームは次のようになります。

a b c d e f g h i j 
2 2 0 5 2 4 2 8 3 5 5 
3 3 0 2 6 6 5 5 6 3 2 
4 4 2 7 3 3 5 4 7 6 6 
5 5 6 3 8 8 8 7 4 3 4 
6 6 7 1 4 4 4 4 2 7 6 
8 2 0 3 4 6 7 0 4 5 4 

これは可能ですか?ありがとうございました!

答えて

29

ことは可能ですが、非常に簡単ではないだけだ。

DF[rowSums(DF == 0) <= 4, ] 

ます。またapplyを使用することができます。

DF[apply(DF == 0, 1, sum) <= 4, ] 
関連する問題