计算R中分组数据中的唯一数据点

时间:2016-06-01 22:47:33

标签: r unique

我一直在搜索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))))

1 个答案:

答案 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作为其等效函数的名称。