我有一个数据框,其中包含过去10年中具有诊断代码历史的患者;就像是:
Patient_ID Diagnosis_Codes Diag_Code_Description
A 1 1:Hypertension
A 1 1:Hypertension
A 4 4:Diabetes
B 3 3:Depression
B 3 3:Depression
C 1 1:Hypertension
C 4 4:Diabetes
C 4 4:Diabetes
… … …
我想提取或制作一个数据框,其中包含每个诊断代码的唯一行Patient_ID和分隔列,其中包含每个患者的代码发生频率,如下表所示,但我不知道如何处理并执行此任务R:
Patient_ID Diag1_freq Diag2_freq Diag3_freq Diag4_freq …
A 2 0 0 1 …
B 0 0 2 0 …
C 1 0 0 2 …
… … … … … …
实际数据有近6万名患者,诊断代码范围在1到999之间;所以结果数据帧将有60 000行和999列 . 真实数据集中的Patient_ID是数字而不是字符串,但我使用“A”,“B”和“C”来避免混淆 . 我感谢任何帮助,并提前多多感谢 .
2 回答
这是一种使用诊断值创建新变量的方法,然后使用
reshape2
包中的cast()
函数来转换数据 .输出看起来像这样 .
问候,
莱恩
您可以使用
aggregate()
或dplyr::group_by()%>%summarise()
或者您可以使用data.table中的一些函数以及更多信息,请点击此处Data.table使用dplyr的示例:
这将在唯一的patient_id级别汇总数据 .