【问题标题】:Filtering Rows in R on Mutliple Conditional Test [duplicate]在多个条件测试中过滤 R 中的行
【发布时间】:2015-07-18 14:25:13
【问题描述】:

所以我试图根据具有两个或多个 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

【问题讨论】:

  • 问题是重复的,但我相信我提出问题的方式更简洁且易于搜索。干杯,科迪

标签: r dataframe filtering rows


【解决方案1】:

这是一种方式:

> 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 进行子集化。

【讨论】:

  • 完美!!干杯,科迪
  • 很高兴我能帮上忙 :)!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多