我一直在搜索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
我正在使用这个公式,它只是提供RANK列中的结果
Unique <- with(DATA, RANK, ID, FUN = function(i) length((unique(i))))
答案 0 :(得分:1)
Base R解决方案。列出按ID和RANK交叉分类的项目数。当您可以识别一个需要在可能的多个条件中应用af = unction但需要将结果分配回数据帧的向量时,ave
函数很有用:length
函数正在进行计数:< / p>
> dat$UNIQUE <- with(dat, ave(ID, ID, RANK, FUN=length))
> dat
ID RANK UNIQUE
1 1 1 1
2 1 3 2
3 1 3 2
4 1 4 1
5 2 2 1
6 2 3 3
7 2 3 3
8 2 3 3
9 3 1 1
10 4 2 2
11 4 2 2
当@hadley决定在dplyr
中重新定义R时,他使用count
作为其等效函数的名称。