下面是我的虚拟数据.我希望在至少3(共5)列中只保留值大于或等于5的行.
A <- c(2,4,6,23,8,3)
B <- c(NA,NA,34,5,6,NA)
C <- c(37,21,8, NA, 5,2)
D <- c(12, 67, 12, 4, 11,NA)
E <- c(11, 56, 66, 90, 2,23)
df <- data.frame(A,B,C,D,E)
df
A B C D E
1 2 NA 37 12 11
2 4 NA 21 67 56
3 6 34 8 12 66
4 23 5 NA 4 90
5 8 6 5 11 2
6 3 NA 2 NA 23
所以我决定用which
和rowsums
:
df[which(rowSums(df[, c(1:5)] >= 5) >= 3),]
是什么给了我:
A B C D E
3 6 34 8 12 66
5 8 6 5 11 2
但是,我希望也考虑到与Nas之间的行,并给出以下结果:
A B C D E
1 2 NA 37 12 11
2 4 NA 21 67 56
3 6 34 8 12 66
4 23 5 NA 4 90
5 8 6 5 11 2
换句话说:第1行有1个nA值,但有3个值(剩余4个)>;=5,因此满足条件.
我如何修改我的命令来实现这一点?