【问题标题】:How to check multiple R columns for a value? [closed]如何检查多个 R 列的值? [关闭]
【发布时间】:2021-01-02 10:54:10
【问题描述】:

我有一个包含数百列的 R 数据框,其中可以包含一个数字。这些列都遵循如下命名方案:

1_parameter, 2_parameter, 3_parameter, ...

我想过滤上述任何列包含的行,比如说数字 97。我该怎么做,而不是使用像下面给出的 dplyr 命令这样的显式过滤器,我必须在其中编写每个显式单列?:

filter(1_parameter==97 | 2_parameter==97 | ...)

【问题讨论】:

    标签: r regex filter dplyr apply


    【解决方案1】:

    dplyr的新版本中,选项为

    library(dplyr)
    library(purrr)
     df %>%
        filter(across(ends_with('parameter'), ~ . == 97) %>% reduce(`|`))
    

    【讨论】:

      【解决方案2】:

      类似这样(假设您的数据名为df

      # get the column names that follow this pattern
      cols = grepl("[0-9]+_parameter", names(df))
      # see if any of those columns have a 97
      any(df[cols] == 97)
      

      一种基本的 R 方法来过滤在任何这些列中具有 97 的行是这样的:

      df[rowSums(df[cols] == 97) > 0, ]
      

      【讨论】:

      • 好的,这符合我的要求,对不起,我需要重新表述:我将如何过滤行,其中任何行都包含 97?我将编辑我的问题。
      【解决方案3】:

      使用dplyr

      df %>% 
           filter_at(vars(ends_with("_parameter")), any_vars(. == 97)) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-11
        • 1970-01-01
        • 2012-12-04
        • 2012-10-05
        • 1970-01-01
        • 2018-08-06
        • 2013-10-20
        相关资源
        最近更新 更多