我们可以使用aggregate'company'的'field'来查找每个'company'中'unique'元素的length
aggregate(field~company, df1, FUN = function(x) length(unique(x)))
# company field
#1 c1 2
#2 c2 3
#3 c3 1
或使用data.table,转换为“data.table”(setDT(df1)),按“公司”分组,使用方便的包装器(uniqueN,即unique的length)
library(data.table)
setDT(df1)[, .(fields = uniqueN(field)), company]
# company fields
#1: c1 2
#2: c2 3
#3: c3 1
或者dplyrn_distinct
library(dplyr)
df1 %>%
group_by(company) %>%
summarise(fields = n_distinct(field))
注意:在示例中,每个“公司”的unique“字段”数和“公司”中的总元素相同。如果是后者,则使用来自data.table 的.N 或来自dplyr 的n(),即
setDT(df1)[, .(fields = .N), company]
数据
df1 <- data.frame(company=c("c1","c2","c3","c2","c1","c2"),
field=c("A","B","C","A","D","C"))