如何在R中从长到宽转置,并为选定的列提供数百个重复的测量值[重复]

问题描述 投票:0回答:1

我有一个包含三个不同变量的大型数据集:ID,入学日期,出院日期。

ID      Admit_Date     Discharge_date
1       2015-1-1       2015-3-9
2       2015-1-9       2015-4-10
2       2015-8-10      2015-11-2

目前,数据集的格式较长,我想将其做成一个宽数据集,每行对应一个ID。由于存在数百个不同的日期,因此我不希望这些值成为列名,因为那样可能会导致数百个列。我希望有多个入场/出场栏,以使其显示为“ admit_date_1”,“ discharge_date_1”,“ admit_date_2”等。

ID      Admit_Date_1    Discharge_date_1     Admit_Date_2     Discharge_date_2
1       2015-1-1       2015-3-9              NA               NA
2       2015-1-9       2015-4-10             2015-8-10        2015-11-2

我已经尝试在R中使用dcast和melt函数,但无法使其看起来像上面这样。任何帮助或指导表示赞赏! -J

r transpose
1个回答
0
投票

在R语言中,您可以这样做:

reshape(transform(df,time=ave(ID,ID,FUN=seq_along)),dir = "wide",idvar = "ID",sep = "_")
  ID Admit_Date_1 Discharge_date_1 Admit_Date_2 Discharge_date_2
1  1     2015-1-1         2015-3-9         <NA>             <NA>
2  2     2015-1-9        2015-4-10    2015-8-10        2015-11-2
© www.soinside.com 2019 - 2024. All rights reserved.