【问题标题】:How to convert a group of variables into multiple columns in R? [duplicate]如何将一组变量转换为R中的多列? [复制]
【发布时间】:2018-07-23 03:39:12
【问题描述】:

我有一个这样的数据集:

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 

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

【问题讨论】:

  • reshape2::dcast(df,Year~vars)aggregate(Data~Years,df,I)spread

标签: r dplyr tidyr data-cleaning


【解决方案1】:

这可以通过来自tidyrspread 来完成:

tidyr::spread(df, vars, Data)

【讨论】:

  • 太棒了!我一直在尝试使用 group by 和 separate 无济于事。非常感谢!
  • np,很乐意为您提供帮助
【解决方案2】:

基本的 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

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2020-02-16
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多