【问题标题】:How to return all unique values of one column based on filtering all other variables in R如何基于过滤R中的所有其他变量返回一列的所有唯一值
【发布时间】:2018-06-21 15:14:32
【问题描述】:

我有一个包含变量 groupX1:X1000 的数据集。对于X1:X1000 中的每一列,我只想过滤具有0 值的行,然后返回过滤数据集中group 变量的唯一值。如果是单列,则类似于:

df %>% filter(X1 == 0) %>% select(group) %>% unique()

因为我希望每一列都使用这个,所以我想也许可以使用 map 以某种方式返回 group 相对于列 X1:X1000 的唯一值列表,但无法弄清楚调用应该是什么看起来像。

【问题讨论】:

    标签: r dplyr purrr


    【解决方案1】:

    我们可以使用map来循环列名的字符串,用filter_at,指定字符串名称,过滤行,select'group'并获取distinct元素

    library(tidyverse)
    map(paste0("X", 1:1000), ~
                    df %>% 
                        filter_at(vars(.x), all_vars(.==0)) %>% 
                        select(group) %>% 
                        distinct
                      )
    

    或者代替filter_at,可以将字符串转换为符号(sym)并在filter内计算(!!

    map(paste0("X", 1:1000), ~
                        df %>%
                            filter(!! (rlang::sym(.x)) ==0) %>%
                            select(group) %>%
                            distinct
                  )  
    

    【讨论】:

    • 谢谢!我一直忘记不将数据框作为map.x 参数,而是间接放入公式的可能性......
    猜你喜欢
    • 2020-11-28
    • 2020-11-02
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2020-05-06
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多