我有一个困扰我很久的问题。我有一个数据框如下......
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
答案 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, ]