列上的dplyr唯一出现次数

时间:2017-08-29 08:28:30

标签: r dplyr tidyverse

我想使用dplyr从另一列分组的一列中获取唯一值的数量。优选的功能友好,即我可以把它放在一个功能中,它将很容易。

例如,对于以下数据框。

test = data.frame(one=rep(letters[1:5],each=2), two=c(rep("c", 3), rep("d", 2), rep("e", 4), "f") )

   one two
1    a   c
2    a   c
3    b   c
4    b   d
5    c   d
6    c   e
7    d   e
8    d   e
9    e   e
10   e   f

我希望第二列的唯一值的数量为第一列。

期望的输出:

  one n
1   a 1
2   b 2
3   c 2
4   d 1
5   e 2

从第一列开始,a只有1个唯一值“c”,b有2个唯一值“c”和“d”,c有2个唯一值“d”和“e”,d有1个唯一值“e” ”

我设法通过group_by()两次工作并总结(),有没有更简单的方法可以使用?

希望这是可以理解的。

谢谢

1 个答案:

答案 0 :(得分:0)

我们可以按“一个”进行分组,并使用n_distinct

获取唯一元素的数量
library(dplyr)
test %>% 
    group_by(one) %>%
    summarise(n = n_distinct(two))