【问题标题】:Count unique data point in grouped data in R [duplicate]计算R中分组数据中的唯一数据点[重复]
【发布时间】: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 %&gt;% group_by(ID, RANK) %&gt;% mutate(Unique = n()) 或基R:df$Unique &lt;- ave(df$ID, df$ID, df$RANK, FUN = length)data.table:setDT(df)[, Unique := .N, by = .(ID, RANK)][]

标签: r unique


【解决方案1】:

基础 R 解决方案。将按 ID 和 RANK 交叉分类的项目数制成表格。 ave 函数在您可以识别一个向量时非常有用,该向量需要在可能的多个条件中应用 f=unction,但需要将结果分发回数据帧: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

当@hadley 决定在dplyr 中重新定义R 时,他使用count 作为等效函数的名称。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多