重组R中的数据

时间:2014-12-31 10:29:23

标签: r dataframe rows calculated-columns

我在重组数据时遇到问题。我有两列,我想用这些列做的是将它们堆叠在它们的原始行下面,使得第一行第一列位于第一行第二列的顶部,第二列第一列,它位于顶部第二排第二列 - 依此类推。在R形式中,它看起来像这样:

C1 C2
 1  2
 1  2
 1  2

我希望它看起来像这样

C3
 1
 2
 1
 2
 1
 2

2 个答案:

答案 0 :(得分:3)

您可以对数据集进行转置,即。 t(df)交换列的行,输出将是matrix(即具有维度属性的向量)。要剥离维度并创建实数向量,可以使用as.vector或简单c(连接)。这可用于创建单个列data.frame

data.frame(C3 = c(t(df)))

使用mapply的其他选项(由@David Arenburg提供)。在这里,这个想法再次逐个元素地逐列连接" C1"和" C2"。

data.frame(C3 = c(mapply(c, df$C1, df$C2)))

要查看其工作原理,请尝试Map。此处,list元素的数量将等于nrow的{​​{1}}:

df

数据

Map(`c`, df$C1, df$C2)

以下是矢量化方法与df <- structure(list(C1 = c(1L, 1L, 1L), C2 = c(2L, 2L, 2L)), .Names = c("C1", "C2"), class = "data.frame", row.names = c(NA, -3L)) 家庭

之间差异的说明
*apply

答案 1 :(得分:0)

我想知道这会如何表现:

matrix( data.matrix(df), ncol=1, byrow=TRUE)

但它仍然比akrun慢。