如何将一组变量转换为 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
我有这样的数据集:
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