通过 ID 操作 R 中的数据帧

Manipulating Data Frame in R by ID

我有一个数据框:

ID      date     term   estimate
unit1 1/1/2015 intercept 1.01
unit1 1/1/2015 x1        2.01
unit1 1/1/2015 x2        3.01
unit1 1/1/2015 x3        4.01
unit1 1/1/2015 x4        5.01
unit2 1/1/2015 intercept 1.01
unit2 1/1/2015 x1        -1.01
unit2 1/1/2015 x2        1.01
unit2 1/1/2015 x3        2.01
unit1 1/2/2015 intercept 1.01
unit1 1/2/2015 x1        2.01
unit1 1/2/2015 x2        3.01
unit1 1/2/2015 x3        4.01
unit1 1/2/2015 x4        5.01

我想要得到的是每个术语在其自己的列中,按 ID 和日期,ID 和日期组合的 NAs 没有与之关联的特定术语。因此,总共应该有 7 列 - ID、日期、截距和 x1-x4。

这是一个从长到宽的简单重塑问题

library(reshape2)
dcast(df, ID + date ~ term)
#      ID     date intercept    x1   x2   x3   x4
# 1 unit1 1/1/2015      1.01  2.01 3.01 4.01 5.01
# 2 unit1 1/2/2015      1.01  2.01 3.01 4.01 5.01
# 3 unit2 1/1/2015      1.01 -1.01 1.01 2.01   NA

library(tidyr)
spread(df1, term, estimate)
#     ID     date intercept    x1   x2   x3   x4
#1 unit1 1/1/2015      1.01  2.01 3.01 4.01 5.01
#2 unit1 1/2/2015      1.01  2.01 3.01 4.01 5.01
#3 unit2 1/1/2015      1.01 -1.01 1.01 2.01   NA