我有一个数据框:
df <- data.frame(month=rep(1:3,2), ID=rep(1:2,each=3),
year=rep(2012,6),tmin=c(1:6),tmax=c(7:12))
我希望有一个数据框,如:
df1 <- data.frame(ID=rep(1:2,each=2), weather=rep(c("tmin","tmax"),2),
year=rep(2012,4), m1=c(1,7,4,10), m2=c(2,8,5,11),
m3=c(3,9,6,12))
在实际数据中有12个月的数千个数据,但基本上我希望按月列转换数据框,我尝试使用t和聚合,并且还搜索了一下,但没有成功,任何帮助都会感谢,谢谢。
答案 0 :(得分:1)
是的, reshape2 是我的第一个想法:
library(reshape2)
dcast(melt(df,id.vars = 1:3),ID + variable + year ~ month,fun.aggregate = sum,value.var = "value")
ID variable year 1 2 3
1 1 tmin 2012 1 2 3
2 1 tmax 2012 7 8 9
3 2 tmin 2012 4 5 6
4 2 tmax 2012 10 11 12
如果你愿意的话,唯一要做的就是重命名列。