计算按子集分组的不同值

时间:2017-05-03 07:08:04

标签: r

我有以下数据集

Note

我有兴趣知道

每家公司有多少个不同的领域?

所以,我需要一个像下面这样的数据框

data.frame(company=c("c1","c2","c3","c2","c1","c2"),field=c("A","B","C","A","D","C"))

1 个答案:

答案 0 :(得分:1)

我们可以使用'{1}}'公司'的'字段'来查找每个'公司'中'{1}}'唯一'元素

aggregate

或使用length,转换为'data.table'(aggregate(field~company, df1, FUN = function(x) length(unique(x))) # company field #1 c1 2 #2 c2 3 #3 c3 1 ),按'公司'分组,使用方便的包装器(data.tablesetDT(df1) { {1}})

uniqueN

lengthunique

library(data.table)
setDT(df1)[, .(fields = uniqueN(field)), company]
#   company fields
#1:      c1      2
#2:      c2      3
#3:      c3      1

注意:在示例中,每个“公司”的dplyr'字段'数和'公司'中的总元素数相同。如果是后者,请使用n_distinct中的library(dplyr) df1 %>% group_by(company) %>% summarise(fields = n_distinct(field)) unique中的.N,即

data.table

数据

n()