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

如何在R中按唯一ID统计重复测量数据的DX频次表

解决方案

要实现按唯一ID统计各DX类别的出现次数(即有多少不同ID包含该DX),核心是先对每个ID的DX去重,再统计频次:

Base R 实现

# 提取每个ID对应的唯一DX值并展开
dx_by_id <- unlist(tapply(df$DX, df$ID, unique))
# 统计每个DX对应的ID数量
tbl <- table(dx_by_id)
# 计算百分比(分母为唯一ID总数)
total_unique_ids <- length(unique(df$ID))
result <- cbind(
  Count = tbl,
  Percentage = round(prop.table(tbl) * 100, 2)
)
# 调整行名
rownames(result) <- names(tbl)
result

输出结果:

Count Percentage
A     3      100.00
B     3      100.00
C     1       33.33

dplyr 简洁实现

如果习惯用tidyverse工具链,代码更直观:

library(dplyr)

df %>%
  distinct(ID, DX) %>%  # 保留每个ID下的唯一DX组合
  count(DX, name = "Count") %>%
  mutate(Percentage = round(Count / n_distinct(df$ID) * 100, 2))

逻辑说明

  1. 去重处理:通过distinct(ID, DX)或tapply+unique,先得到每个ID对应的不重复DX值,避免同一ID内的重复DX被多次计数;
  2. 统计频次:对去重后的DX列计数,得到的就是包含该DX的唯一ID数量;
  3. 计算百分比:以唯一ID的总数(这里是3)作为分母,计算每个DX类别的占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:33