r - 在 R 中进行多条件测试时过滤行

标签 r dataframe filtering rows

因此,我尝试根据具有两个或多个 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/

相关文章:

r - R中使用dplyr基于单一条件过滤组

python - 如何从 Pandas 数据框中提取索引?

r - 我们可以创建一个比 R 中的值多 n 个级别的因子变量子集吗?

jquery - 使用 ajax 时使用带有 tablesorter 的外部过滤器

python 3 : remove overlaps in table

r - 将 dplyr 函数应用于除一列之外的所有列

r - 时间戳差异

r - 如何为 R 中的变量分配固定内存大小

pandas - 将字符串转换为整数 Pandas 数据帧索引

python - 在 pandas 中切片 DataFrame?