2016-04-22 39 views
0

我有一个数据帧,dfR - 如何根据两列之间的关系重新设置数据帧?

ICD MRN  Adm   
X  24  1/01/2015  
Y  21  1/22/2015  
A  10  2/09/2015  
B  10  2/09/2015  
C  10  2/09/2015  
F  97  4/10/2015  
X  97  4/10/2015  
Z  33  5/17/2015  

我希望做的是有ICD值进入每个MRN自己列。如果一个MRN只有一个ICD与它关联,那么没关系,但是如果有多个值,他们应该进入它们自己的列。

事情是这样的:

MRN  ICD.1  ICD.2 ICD.3  Adm  
24   X   NA  NA  1/01/2015 
21   Y   NA  NA  1/22/2015 
10   A   B  C  2/09/2015 
97   F   X  NA  4/10/2015 
33   Z   NA  NA  5/17/2015 

我无法弄清楚如何做到这一点!我甚至很难问这个问题!我怀疑它需要使用reshape2,但我在这方面很薄弱,并且会喜欢社区的一些帮助。

+1

是啊,这将是''从reshape2' – CephBirk

+0

如果有可能dcast'功能,你愿意告诉我如何工作的? –

回答

2

这里有一种方法 - 重复的地方......

library(tidyr) 
library(dplyr) 

df %>% 
    group_by(MRN) %>% 
    mutate(ICD_lbl = paste0("ICD.", data.table::rleid(ICD))) %>% 
    spread(ICD_lbl, ICD) 
+0

这是行不通的,但我想看看'dcast'和'reshape2'的例子。如果没有人发布我会将此标记为正确答案。非常感谢您的帮助! –

+1

我不认为你需要在这里。无论如何,data.table类似物是dcast(setDT(DF),MRN + Adm_Ridid(MRN),value.var =“ICD”)'。随意添加它。 – Frank

+0

谢谢@Frank! –

相关问题