2016-04-22 4 views
0

私はデータフレーム、df持っている:私はやりたい何R - 2つの列間の関係に基づいてデータフレームを再形成する方法

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には1つの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

ここに1つの方法だ - それは可能であればどこかに複製が...

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〜rowid(MRN)、value.var =" ICD ")'です。それを自由に追加してください。 – Frank

+0

ありがとう@フランク!! –

関連する問題