【发布时间】:2013-06-06 00:23:02
【问题描述】:
我有以下格式的数据 -
ID EVID ADMIT DC DRG CLIN_C PRIN_DX
1 AA 1/1/13 2/1/13 ABC 1A234 Y
1 AA 1/1/13 2/1/13 ABC 1B345 N
1 AA 1/1/13 2/1/13 ABC 1C234 N
1 AA 1/1/13 2/1/13 ABC 1234C N
1 BB 3/1/13 2/15/13 EEE C12C3 Y
1 BB 3/1/13 2/15/13 EEE 1B345 N
1 BB 3/1/13 2/15/13 EEE 1C234 N
1 BB 3/1/13 2/15/13 EEE 987D N
2 CC 3/1/13 2/15/13 EEE C12C3 Y
2 CC 3/1/13 2/15/13 EEE 546X N
2 CC 3/1/13 2/15/13 EEE 1C234 N
2 CC 3/1/13 2/15/13 EEE 1234C N
我想要以下格式的数据:
ID EVID ADMIT DC DRG PRIN_DX 1B345 1C234 1234C 987D 546X
1 AA 1/1/13 2/1/13 ABC 1A234 1 1 1 0 0
1 BB 3/1/13 2/15/13 EEE C12C3 1 1 0 1 0
2 CC 3/1/13 2/15/13 EEE C12C3 0 1 0 0 1
如果可能的话,我想用 R 来做这件事。我尝试过 reshape/reshape2,但找不到处理分组行的明显方法 - 将分组行拆分为列,并聚合剩余的行。
数据是数百次住院的记录 - 如此之大是合理的。
【问题讨论】:
-
不清楚(对我来说)什么是聚合的,什么不是......它看起来也像
PRIN_DX不代表与宽格式相同类型的长格式数据格式。我的第一个想法是你可能想要这样的东西:library(reshape2); dcast(ID + EVID + ADMIT + DC + DRG ~ CLIN_C, data = x) -
ID、EVID、ADMIT、DC、DRG 列都应该聚合 - 对于给定的录取,这些数据是相同的。 CLINC_C 是临床代码,用于识别入院期间分配的所有诊断 - 可以分配 1 到 20。 PRIN_DX 识别入院期间的主要诊断。我想将 CLIN_C 转换为每个承认事件的单独列,但如果可能,请确定主要诊断。只对列的聚合和行感到满意