【问题标题】:How to reshape data.frames in a list?如何重塑列表中的 data.frames?
【发布时间】:2012-05-30 11:36:26
【问题描述】:

我有一个这样的列表

A <- data.frame(a = c(1, 2), b = c(3, 4))
B <- data.frame(c = c(1, 2), d = c(3, 4))
g <- list(var1 = A, var2 = B)

生产

> g
$var1
  a b
1 1 3
2 2 4

$var2
  c d
1 1 3
2 2 4

现在我想像这样转置列表元素

lapply(g, function(x) data.frame(t(x)))

但这会产生 a、b、c d 作为行名,这不是我想要的

> lapply(g, function(x) data.frame(t(x)))
$var1
  X1 X2
a  1  2
b  3  4

$var2
  X1 X2
c  1  2
d  3  4

我想在这些 data.frames 中为 a、b、c 和 d 生成一个新列。如何做到这一点?

【问题讨论】:

    标签: r reshape transpose reshape2


    【解决方案1】:

    第 1 点:如果您要转置数据,这很可能意味着您应该使用数组,而不是 data.frames。

    但是,如果这真的是您想要做的,那么只需在列名中添加cbind()

    lapply(g, function(x) as.data.frame(cbind(colnames(x), t(x))))
    $var1
      V1 V2 V3
    a  a  1  2
    b  b  3  4
    
    $var2
      V1 V2 V3
    c  c  1  2
    d  d  3  4
    

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2016-04-11
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2020-06-09
      相关资源
      最近更新 更多