使用R过滤特殊行

时间:2015-08-20 06:49:47

标签: r data-cleaning

我有一个困扰我很久的问题。我有一个数据框如下......

ll <- data.frame(id=1:10,
                 A=c(rep(0,5),3,4,5,0,2),
                 B=c(1,4,2,0,3,0,3,24,0,0),
                 C=c(0,3,4,5,0,4,0,6,0,5),
                 D=c(0,1,2,0,42,4,0,3,8,0))

> ll
   id A  B C  D
1   1 0  1 0  0
2   2 0  4 3  1
3   3 0  2 4  2
4   4 0  0 5  0
5   5 0  3 0 42
6   6 3  0 4  4
7   7 4  3 0  0
8   8 5 24 6  3
9   9 0  0 0  8
10 10 2  0 5  0

我想过滤掉一些具有多个“0”的特殊行,例如......

    id A  B C  D
1   1  0  1 0  0

我希望最终输出为......

   id A  B C  D
2   2 0  4 3  1
3   3 0  2 4  2
6   6 3  0 4  4
8   8 5 24 6  3

1 个答案:

答案 0 :(得分:2)

您可以使用rowSums

> ll[rowSums(ll == 0) <= 1, ]
  id A  B C D
2  2 0  4 3 1
3  3 0  2 4 2
6  6 3  0 4 4
8  8 5 24 6 3

如果有任何列不应包含在内,您可以在rowSums步骤中删除它们。例如,我假设&#34; id&#34;不包括在内。如果是这样,那么你可以这样做:

ll[rowSums(ll[-1] == 0) <= 1, ]
相关问题