dplyr:返回已过滤数据帧的所有列中的不同值的数量

时间:2017-06-17 11:06:59

标签: r dplyr

我无法在任何地方找到如何在Dplyr中执行此操作的示例,但肯定可以这样做吗?

示例数据框:

x      y      z
this   it     1
that   them   2
that   us     3
that   you    4

瞄准这样的事情:

data %>%
  filter(x %in% 'that') %>%
  summarise(n_distinct(all dataframe cols))

要归还:

x  y  z
1  3  3

如果您只引用一列,它是否有效,但如何在不分别调用每列的n_distinct的情况下返回所有列的不同值的数量?

2 个答案:

答案 0 :(得分:3)

您可以使用summarisemutate的范围变体,附加_all_at_if

 data.frame(x = c("this", "that", "that", "that"),
            y = c("it", "them","us","you"),
            z = c(1,2,3,4),
            stringsAsFactors = F) %>%
  filter(x %in% "that") %>%
  summarise_all(n_distinct)

答案 1 :(得分:1)

好的,我使用summarise_all进行了解决。

data %>%
  filter(x %in% 'that') %>%
  summarise_all(funs(n_distinct(.)))