通过组获取ID,然后计算这些ID的唯一值

时间:2017-03-08 09:27:30

标签: r

我有一个数据框df,如下所示:

Name = c("Tom D Frost","Tom D Frost", "Tom D Frost", "William J Hardy", "William J Hardy", "Steven D Debauche", "Nicholas K Foster", "Sean F Williamson")
Institute = c("ASA", "ASA", "ASA", "BSC", "BSC", "BSC", "AXB", "PSDZ")
ID = c(165, 170, 189, 181, 165, 784, 165, 170)
df = data.frame(Name, Institute, ID)

#df
            Name       Institute  ID
1        Tom D Frost       ASA    165
2        Tom D Frost       ASA    170
3        Tom D Frost       ASA    189
4    William J Hardy       BSC    181
5    William J Hardy       BSC    165
6  Steven D Debauche       BSC    784
7  Nicholas K Foster       AXB    165
8  Sean F Williamson      PSDZ    170

对于每个名称,我想获得一组ID,然后计算这些ID组的唯一名称。对于这个样本df,我期待这样的结果:

Name             Institute    UniqueCountofNamebyIDGroup
Tom D Frost        ASA            4
William J Hardy    BSC            3
Steven D Debauche  BSC            1
Nicholas K Foster  AXB            3
Sean F Williamson  PSDZ           2

在数据框中,我想计算ID组的名称。例如,“Tom D Frost”有3个ID,例如165,170和189.因此,我想计算这些ID的唯一名称。因此,165,170和189有4个独特的名字,如“Tom D Frost”,“William J Hardy”,“Nicholas K Foster”和“Sean F Williamson”。因此,“Tom D Frost”的唯一计数为4

我尝试使用dplyr

library(dplyr)
df %>%
group_by(Name) %>%
summarise(uniqueCount = n())

这只是给出了每个姓名的频率如下:

           Name                      UniqueCount
         <fctr>                      <int>
1     Nicholas K Foster                1
2     Sean F Williamson                1
3     Steven D Debauche                1
4       Tom D Frost                    3
5     William J Hardy                  2

如上所述,我想为df中属于每个姓名的ID组计算唯一名称,而不是其频率。

非常感谢任何帮助和支持。非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以进行自我加入:

{{1}}
相关问题