如何通过过滤R中的所有其他变量来返回一列的所有唯一值

时间:2018-06-21 15:14:32

标签: r dplyr purrr

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

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

由于我希望每个列都这样,所以我认为也许可以使用map返回有关列group的{​​{1}}唯一值的列表,但是不能弄清楚通话的外观。

1 个答案:

答案 0 :(得分:1)

我们可以使用map遍历列名字符串,使用filter_at,指定字符串名,过滤行,select'group'并获得{ {1}}个元素

distinct

或者代替library(tidyverse) map(paste0("X", 1:1000), ~ df %>% filter_at(vars(.x), all_vars(.==0)) %>% select(group) %>% distinct ) ,也可以在filter_at内将字符串转换为符号(sym)并求值(!!

filter