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

R语言如何对数据框列表列中的唯一值进行分组统计?

R嵌套列表列按单个元素分组统计的实现方法

核心思路

  • 嵌套列表列无法直接按单个元素分组,需要先将列表展开为「每行对应1个患者+1个手术类型」的长结构,再执行分组汇总
  • 不需要额外为每个手术类型新增标记列,仅需1行展开代码即可实现后续所有分组分析需求

可直接运行的实现代码(tidyverse方案)

library(tidyverse)

# 展开列表列后分组统计
df %>%
  # 将procedures列表列拆分为长格式,每个手术类型单独占一行
  unnest_longer(procedures) %>%
  # 按单个手术类型分组
  group_by(procedures) %>%
  # 统计对应患者人数,如需分析其他结局指标可在此新增统计逻辑
  summarise(患者人数 = n())

运行返回结果示例

procedures患者人数
14
23
33
42
53

基础包实现方案(无需加载第三方包)

如果不想依赖tidyverse,也可以用基础R函数实现同等效果:

# 获取所有唯一手术类型
unique_proc <- sort(unique(unlist(df$procedures)))
# 遍历统计每个手术的患者数
proc_count <- sapply(unique_proc, function(p) {
  sum(sapply(df$procedures, function(x) p %in% x))
})
# 转为数据框查看结果
data.frame(手术类型 = unique_proc, 患者人数 = proc_count)

原代码失效原因说明

之前使用group_by(procedures)统计无效,是因为该语法会把每个完整的手术列表作为分组依据,只有手术组合完全一致的患者才会被分到同一组,自然无法得到单个手术类型的统计结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:08