我需要将事件级数据集转换为患者级数据,即基于deidnum
作为关键变量,将长数据集转换为更宽的数据集。此外,我还想为每个生成的事件及其事件时间创建列。如果同一患者发生多起事件,则考虑最早的事件时间。
下面是一个类似的数据示例和我的代码:
df <- read.table(text = "deidnum,eventc,EVENTDT,MI_COMPLICATED
325107,MI,21,1
325107,New Rose Dyspnea Scale 2 or more,1468,NA
418351,New Rose Dyspnea Scale 2 or more,207,NA
839172,New Rose Dyspnea Scale 2 or more,1060,NA
839172,New Rose Dyspnea Scale 2 or more,1718,NA
1487422,MI,990,0
1487422,DEATH,1113,NA
1511165,MI,424,0
1511165,MI,608,1
1511165,New Rose Dyspnea Scale 2 or more,721,NA
", sep = ",", header = TRUE)
library(reshape2)
wide.df <- dcast(df, deidnum ~ eventc)
wide.df
字符串
当前输出
deidnum DEATH MI New Rose Dyspnea Scale 2 or more
1 325107 0 1 1
2 418351 0 0 1
3 839172 0 0 2
4 1487422 1 1 0
5 1511165 0 2 1
型
预期输出:
任何建议将不胜感激。
3条答案
按热度按时间v440hwme1#
tidyverse
工作流:字符串
unused_fn = first
用于按id_cols
列(deidnum
)分组,然后使用first()
汇总未使用的列(MI_COMPLICATED
)(假设已按EVENTDT
排序)。*u5rb5r592#
merge
使用基本reshape
调用。字符串
ohfgkhjo3#
这里有一个新的tidyverse方法: