因此,我尝试根据具有两个或多个 0 值的条件来过滤 data.frame 的行。
mir Target_2 Score value_2 Blank
1 BERKSHIRE BERKS 77 0 0
2 FRANKLIN FRANK 81 5 0
3 HAMPDEN DEN 69 4 0
4 HAMPSHIRE HAMP 75 0 0
5 MIDDLESEX SEX 47 0 0
6 WORCHESTER SEX 0 2 0
7 WORCHESTER WOR 64 0 0
8 BERKSHIR BERKS 0 3 0
9 HAMPHIRE HAMP 0 4 0
上面是一个示例数据框,我需要帮助返回行中只有一个零值的值。出于本示例的目的,我包含了一个全零的列,但我的数据不会那么干净。所以我想知道是否有如下条件:
If col[value] == 0:
if col+1[value] == 0:
filter
elif col+2[value] == 0:
filter
elif col+n[value] == 0:
filter
我想要将函数的输出应用于测试表:
mir Target_2 Score value_2 Blank
2 FRANKLIN FRANK 81 5 0
3 HAMPDEN DEN 69 4 0
最佳答案
这是一种方法:
> df[apply(df[3:5], 1, function(x) table(x)['0']==1), ]
mir Target_2 Score value_2 Blank
2 FRANKLIN FRANK 81 5 0
3 HAMPDEN DEN 69 4 0
它使用函数table
来计算每个数字的频率。如果 0
的频率为 1,则该行返回 TRUE
。然后用它来相应地对 df
进行子集化。
关于r - 在 R 中进行多条件测试时过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110805/