【问题标题】:melt and append data using reshape2 functions in R使用 R 中的 reshape2 函数融化和附加数据
【发布时间】:2012-02-03 01:57:15
【问题描述】:

这应该很简单,但由于某种原因我被卡住了。我的数据看起来像

A <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))
B <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))
C <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))

method1 <- list(A=A,B=B,C=C)
method2 <- list(A=A,B=B,C=C)

biglist <- list(method1, method2)

我想重新格式化数据,使其看起来像

x y z   dataset  method
- - -   ---       -----
1 1 1    A          1
1 0 2    A          1
1 0 3    A          1
1 1 3    A          1
1 1 1    B          1
1 0 2    B          1
1 0 3    B          1
1 1 3    B          1
1 1 1    C          1
1 0 2    C          1
1 0 3    C          1
1 1 3    C          1
1 1 1    A          2
1 0 2    A          2
1 0 3    A          2
1 1 3    A          2
1 1 1    B          2
1 0 2    B          2
...

melt 并不能完全满足我的要求,因为它折叠了我的 x/y/z 变量标题。

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    你的 data.frames 应该有一个主键, 例如,标识符列或具有唯一值的列—— 否则,您将得到 x, y, z 几个不相关行中一个点的坐标。 我会假设x 就是这样一个专栏。

    您可能还需要在melt 之后调用dcast, 如果生成的 data.frame 太垂直。

    library(reshape2)
    d <- melt(biglist, id.vars="x")
    d <- dcast( d, L1 + L2 + x ~ variable )
    

    【讨论】:

    • 太棒了,我想我只是忘记/从不理解 id.vars: 一个更清洁的解决方案怎么样: d
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2015-02-12
    • 2011-04-15
    • 2014-10-30
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多