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

R语言多列数据框转ID+数据点两列格式求助

搞定宽表转长表 + Comorbidity包分析的实操指南

Hey there! 作为R新手要处理百万级的宽表确实有点头大,别担心,我来给你一步步捋清楚怎么搞定转长表+用Comorbidity包分析的事儿~

第一步:把宽格式数据转成需要的长格式

因为你要处理数百万条记录,我给你推荐两种方法:一种是速度拉满适合大数据的data.table,另一种是语法直观新手友好的tidyr工具,你按需选就行:

方法1:用data.table(大数据首选,快到飞起)

先装包加载:

install.packages("data.table")
library(data.table)

把你的数据转成data.table格式,再用melt函数一键转长:

# 假设你的原数据框名叫df
setDT(df) # 把普通数据框转成data.table
long_df <- melt(df, 
                id.vars = "ID",       # 保留ID列作为标识
                measure.vars = patterns("^Dx"), # 匹配所有Dx开头的列(Dx1到Dx33)
                variable.name = "Dx_col", # 暂时存原列名(比如Dx1)
                value.name = "Dx")    # 把诊断编码命名为Dx

# 要是不需要原列名(Dx1/Dx2这些),直接删掉就行
long_df[, Dx_col := NULL]

转完之后的结果就完全是你想要的结构啦:

ID Dx
1 12
1 11
1 0
2 3
2 1
...

方法2:用tidyr的pivot_longer(新手友好,语法好懂)

如果你更习惯tidyverse的风格,用这个:

install.packages("tidyr")
library(tidyr)

long_df <- df %>%
  pivot_longer(cols = starts_with("Dx"), # 选所有Dx开头的列
               names_to = "Dx_col",      # 存原列名
               values_to = "Dx") %>%     # 诊断编码列名设为Dx
  select(-Dx_col) # 删掉不需要的原列名字段

第二步:用Comorbidity包做合并症分析

转好长表就可以用Comorbidity包啦,先装包加载:

install.packages("comorbidity")
library(comorbidity)

核心就是comorbidity()函数,参数设置很关键,我给你写好注释:

# 生成每个ID的合并症分组结果
comorb_df <- comorbidity(x = long_df, 
                         id = "ID",       # 指定ID列
                         code = "Dx",     # 指定诊断编码列
                         map = "icd10",   # 因为你的编码是ICD-10,必须对应上
                         assign0 = FALSE) # 划重点:如果你的Dx=0是「无诊断」,就改成TRUE,会自动排除;如果0是有效编码,就保持FALSE

运行完之后,comorb_df里会有每个ID对应的各种合并症分组(比如Charlson合并症里的糖尿病、心脏病这些),要是想算合并症得分也很简单:

# 计算Charlson合并症指数得分
comorb_df$charlson_score <- charlson(comorb_df)

给新手的小提醒

  • 处理百万级数据优先选data.table,比tidyverse省内存还快很多
  • 要是原数据里有NA值,转长表的时候可以加个na.rm = TRUE参数删掉(比如melt(..., na.rm = TRUE))
  • 用Comorbidity包前,先确认你的Dx编码是标准ICD-10格式,不然会导致分组出错哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:17