【问题标题】:dcast from wide to long [duplicate]dcast从宽到长[重复]
【发布时间】:2023-08-17 06:00:01
【问题描述】:

这应该很容易,但我找不到正确的方法。

jk <- data.frame(j=c("a","b","a","b"),val=c(1,3,2,1))

我希望 dcast 分别返回带有 {1,2} 和 {3,1} 的两列 a 和 b。

【问题讨论】:

    标签: r data.table reshape2


    【解决方案1】:

    base R中,我们可以使用unstack

    unstack(jk, val ~ j)
    

    -输出

    #  a b
    #1 1 3
    #2 2 1
    

    如果我们使用dcast,创建一个序列列,因为'j'有重复项

    library(data.table)
    dcast(setDT(jk), rowid(j) ~ j, value.var = 'val')[, j := NULL][]
    

    -输出

    #  a b
    #1: 1 3
    #2: 2 1
    

    【讨论】: