如何将一组变量转换为 R 中的多列?

How to convert a group of variables into multiple columns in R?

我有这样的数据集:

vars    Year    Data
abc12   2014    2630898
abc12   2015    2619763
abc12   2016    2692241
bgh23   2014    2844513
bgh23   2015    2832818
bgh23   2016    3009455
drt98   2014    3166243
drt98   2015    3339208
drt98   2016    3339208

我想把它变成这样:

Year    var1     var2    var3
2014    2630898  2844513 3166243
2015    2619763  2619763 3339208
2016    2692241  2832818 3339208 

本质上是取出变量组并从中构建一列。我该怎么做? 谢谢!

这可以通过 tidyr 中的 spread 来完成:

tidyr::spread(df, vars, Data)

基础 R 解决方案是

reshape(df1, timevar = "vars", idvar = "Year", direction = "wide")

讨厌但对更艰巨的挑战很有用,因为它要快得多——或者,更好的是,aggregate(Data~Year, df1, I) 正如@Onyambu 在评论中建议的那样。

Unit: milliseconds
      expr      min       lq      mean   median        uq       max neval
 aggregate 1.107592 1.288484  1.396685 1.377006  1.474080  10.58327  1000
   reshape 1.519411 1.684908  1.820591 1.775141  1.873498  10.40494  1000
    spread 8.670002 9.469691 10.365579 9.789567 10.116285 308.85757  1000