1

我有一个数据框:

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 和聚合,也四处搜索,但没有成功,任何帮助将不胜感激,谢谢。

4

1 回答 1

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

如果您愿意,唯一剩下的就是重命名列。

于 2013-06-12T20:01:57.240 回答