【问题标题】:Reshaping 2 column data.table from long to wide将 2 列 data.table 从长整形为宽
【发布时间】:2016-07-12 15:47:31
【问题描述】:

这是我的数据框:

library(data.table)
    df<- fread('

predictions Label
   3           A
   4           B
   5           C
   1           A
   2           B
   3           C
')

期望的输出:

A  B  C
3  4  5
1  2  3

我正在尝试DesiredOutput&lt;-dcast(df, Label+predictions ~ Label, value.var = "predictions"),但没有成功。感谢您的帮助!

【问题讨论】:

    标签: r data.table reshape reshape2


    【解决方案1】:
    df[, idx := 1:.N, by = Label]
    
    dcast(df, idx ~ Label, value.var = 'predictions')
    #   idx A B C
    #1:   1 3 4 5
    #2:   2 1 2 3
    

    【讨论】:

    • 或者dcast(df, rowid(Label) ~ Label, value.var = 'predictions'),我想。
    【解决方案2】:

    也许基础 R 函数 unstack 是最干净的解决方案:

    unstack(df)
      A B C
    1 3 4 5
    2 1 2 3
    

    请注意,这会返回一个 data.frame 而不是一个 data.table,所以如果你想要一个 data.table 在最后:

    df2 <- setDT(unstack(df))
    

    将返回一个 data.table。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 2021-05-03
      • 1970-01-01
      • 2018-06-24
      • 2013-08-05
      • 1970-01-01
      • 2017-06-18
      • 2021-09-18
      相关资源
      最近更新 更多