【发布时间】:2016-06-01 22:47:32
【问题描述】:
我在 SO 上搜索了几个小时,但找不到此解决方案。
我有以下数据集:
ID RANK
1 1
1 3
1 3
1 4
2 2
2 3
2 3
2 3
3 1
4 2
4 2
我正在尝试按 ID 分组,然后计算排名在组 ID 中出现的唯一次数,以便得出结果
ID RANK Unique
1 1 1
1 3 2
1 3 2
1 4 1
2 2 1
2 3 3
2 3 3
2 3 3
3 1 1
4 2 2
4 2 2
我正在使用这个公式,它只是提供排名列中的结果
Unique <- with(DATA, RANK, ID, FUN = function(i) length((unique(i))))
【问题讨论】:
-
与
dplyr:df %>% group_by(ID, RANK) %>% mutate(Unique = n())或基R:df$Unique <- ave(df$ID, df$ID, df$RANK, FUN = length)或data.table:setDT(df)[, Unique := .N, by = .(ID, RANK)][]