我在R中有这个数据框,我只需要选择至少符合以下两个条件的行:
D> = 5
A B C D
1 0.000000 48.936170 0.000000 29.787234
2 0.000000 72.340426 0.000000 6.382979
3 0.000000 78.723404 0.000000 2.127660
4 2.127660 78.723404 0.000000 0.000000
5 0.000000 43.617021 0.000000 35.106383
6 0.000000 79.787234 0.000000 1.063830
7 3.191489 0.000000 77.659574 0.000000
8 77.659574 0.000000 2.127660 0.000000
9 46.808511 0.000000 0.000000 31.914894
10 35.106383 0.000000 27.659574 0.000000
我找到的唯一解决方案是使用“if”......
if ( ((data$A >=5) + (data$B >=5) + (data$C >=5) + (data$D >=5)) >=2 ) {
#result }
...但我找不到如何将if选择与我的数据框结合起来。 我试过这样但我似乎不是这个问题的解决方案:
Selection = data[if ( ((data$A >=5) + (data$B >=5) + (data$C >=5) + (data$D >=5)) >=2 ),]
提前感谢您的帮助,
答案 0 :(得分:4)
您也可以
df <- read.table(header=T, text=" A B C D
1 0.000000 48.936170 0.000000 29.787234
2 0.000000 72.340426 0.000000 6.382979
3 0.000000 78.723404 0.000000 2.127660
4 2.127660 78.723404 0.000000 0.000000
5 0.000000 43.617021 0.000000 35.106383
6 0.000000 79.787234 0.000000 1.063830
7 3.191489 0.000000 77.659574 0.000000
8 77.659574 0.000000 2.127660 0.000000
9 46.808511 0.000000 0.000000 31.914894
10 35.106383 0.000000 27.659574 0.000000")
df[rowSums(df >= 5) >= 2, ]
# A B C D
# 1 0.00000 48.93617 0.00000 29.787234
# 2 0.00000 72.34043 0.00000 6.382979
# 5 0.00000 43.61702 0.00000 35.106383
# 9 46.80851 0.00000 0.00000 31.914894
# 10 35.10638 0.00000 27.65957 0.000000