使用R中的重复ID将数据帧行转换为列

时间:2017-02-25 23:02:39

标签: r

我想使用我的ID列转换我的数据框,在一个ID下创建新变量。

>Data1
ID  Object  ITEM    Time    Value
1   a       123     7pm     12.0
1   b       234     8pm     4.0
1   c       345     7pm     1.0 
2   a       123     7am     6.0
2   b       234     8pm     8.1
2   c       345     12pm    9.7


ID  Object1 ITEM1   Time1   Value1  Object2 ITEM2   Time2   Value2  Object3 ITEM3   Time3   Value3
1   a       123     7pm     12.0    b       234     8pm     4.0     c       345     7pm     1.0
2   a       123     7am     6.0     b       234     8pm     8.1     c       345     12pm    9.7

谢谢。

1 个答案:

答案 0 :(得分:1)

我们可以使用dcast中的data.table来执行此操作,这可能需要多个value.var

library(data.table)
dcast(setDT(Data1), ID~rowid(ID), value.var = names(Data1)[-1])
#   ID Object_1 Object_2 Object_3 ITEM_1 ITEM_2 ITEM_3 Time_1 Time_2 Time_3
#1:  1        a        b        c    123    234    345    7pm    8pm    7pm
#2:  2        a        b        c    123    234    345    7am    8pm   12pm
#   Value_1 Value_2 Value_3
#1:      12     4.0     1.0
#2:       6     8.1     9.7