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

计算R中分组数据中的唯一数据点,r,unique,R,Unique,我已经搜索了几个小时了,所以找不到这个解决方案 我有以下数据集: 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   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))))

UniqueBase R解决方案。将按ID和等级交叉分类的项目数量制成表格。当您可以识别一个向量,该向量需要在可能的多个条件下应用f=函数,但需要将结果分布回数据帧时,
ave
函数非常有用:
length
函数正在进行计数:

> 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
>dat$UNIQUE dat
ID秩唯一
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
作为其等价函数的名称。

dplyr
df%>%groupby(ID,RANK)%%>%mutate(Unique=n())
或base R:
df$Unique