使用spread和/或dcast命令

时间:2015-05-22 20:59:07

标签: r dataframe

假设我有以下数据框:

Name Type Date   Description   CorrectionCode
Bob  X1   01/01  Desc1            394
Bob  X2   01/01  Desc2            9348
Jim  X3   03/04  Desc4            934

我如何进入

Name Type Date Description1 CorrectionCode1 Description2 CorrectionCode2
Bob   X1  01/01  Desc1          394           Desc2          9348
Jim   X3  03/04  Desc4           934

我正在尝试使用tidyR中的spread spread来执行此操作,但我很乐意使用其他内容。

1 个答案:

答案 0 :(得分:3)

您可以从dcast的开发版试用data.table,即。 v1.9.5。安装说明为here

library(data.table)
dcast(setDT(df1)[, c('Type', 'Seq'):= list(Type[1L], 1:.N) , Name],
    Name+Type+Date~Seq, value.var=c('Description', 'CorrectionCode'))
#    Name Type  Date 1_Description 2_Description 1_CorrectionCode
#1:  Bob   X1 01/01         Desc1         Desc2              394
#2:  Jim   X3 03/04         Desc4            NA              934
#   2_CorrectionCode
#1:             9348
#2:               NA