我想将data.frame从long移动到wide。每当我有一个重复的id时,我想将我在特定var中的结果复制到一个新的col。最后我希望id成为一个唯一的id。我已经看过使用重塑功能 - 但似乎无法处理没有" timevar" - 在我的特定情况下,我没有一个我想重塑的分组变量。堆栈溢出有很多重塑数据,但我似乎无法找到这个问题。
我有:
a<-
data.frame(
id = c( 11,12,13,14,15,15,16,17,17,18,19,10) ,
pi = c( 21:32 )
)
我想要
b<-
data.frame(
id = c( 11,12,13,14,15,16,17,18,19,10) ,
pi = c( 21:25,27:28,30:32 ),
pi2 = c( NA,NA,NA,NA,26,NA,29,NA,NA,NA)
)
答案 0 :(得分:0)
您可以通过以下几个步骤完成此操作:
bb <- aggregate(pi~id, data=a, FUN=c)
cols <- max(sapply(bb$pi, length))
b <- cbind(bb$id, sapply(seq(cols), function(i) sapply(bb$pi, '[', i)))
b
## [,1] [,2] [,3]
## 1 10 32 NA
## 2 11 21 NA
## 3 12 22 NA
## 4 13 23 NA
## 5 14 24 NA
## 6 15 25 26
## 8 16 27 NA
## 9 17 28 29
## 11 18 30 NA
## 12 19 31 NA