You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中按日期统计唯一ID数量的实现方法咨询

按日期统计唯一ID数量的R解决方案

我来帮你解决这个按日期统计唯一ID数量的问题,这里有几种实用的R语言方法,你可以根据自己的习惯选择:

方法1:使用基础R的aggregate函数

你提到的aggregate完全可以实现这个需求,只需要把聚合函数从sum换成计算唯一值个数的逻辑就行。我们可以用length(unique(x))来统计每个日期分组里的唯一ID数量:

# 先构造你的示例数据框
df <- data.frame(
  ID = c(1, 1, 1, 2, 2, 2, 3, 3),
  Date = c("2009/11/1", "2009/11/2", "2009/11/2", "2009/11/1", "2009/11/1", "2009/11/2", "2009/11/1", "2009/11/3")
)

# 用aggregate统计唯一ID数
result <- aggregate(ID ~ Date, data = df, FUN = function(x) length(unique(x)))
# 重命名列名以匹配你的期望结果
colnames(result) <- c("Date", "uniqueIDs")

print(result)

运行后会输出你想要的结果:

Date uniqueIDs
1 2009/11/1         3
2 2009/11/2         2
3 2009/11/3         1

方法2:使用dplyr包(tidyverse风格)

如果你习惯使用tidyverse系列工具,dplyr的语法会更直观简洁,用n_distinct()函数可以直接统计唯一值数量:

library(dplyr)

result <- df %>%
  group_by(Date) %>%          # 按日期分组
  summarise(uniqueIDs = n_distinct(ID)) %>%  # 统计每组唯一ID数
  ungroup()                   # 取消分组(可选,避免后续操作受分组影响)

print(result)

方法3:使用data.table包(适合大数据量)

如果你的数据集很大,data.table的处理速度会更快,它的uniqueN()函数专门用来计算唯一值数量:

library(data.table)

# 转换为data.table格式
dt <- as.data.table(df)
# 按日期分组统计唯一ID数
result <- dt[, .(uniqueIDs = uniqueN(ID)), by = Date]

print(result)

这三种方法都能得到你期望的结果,你可以根据自己的代码习惯和数据规模来选择~

内容的提问来源于stack exchange,提问作者Ron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 10:42:42