2016-04-22 41 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! –

相關問題