如何堆叠数据帧行

时间:2017-01-18 20:44:15

标签: r

我无法将data.frame中的行堆叠成一行。我的数据看起来像这样:

v1       v2      v3      index     
var1     ad      b1      1    
var2     sa      b2      2     
var3     4       b3      3     
var1     5       b4      1     
var2     6       b5      2    
var3     2       b6      3
.        .       .       . 
.        .       .       . 
.        .       .       . 

我试图转置数据,因此v1成为我的同名,它们也是堆叠的。我熟悉本机转置命令t()并将colnames指定为第一行。但是,我不确定如何堆叠行。我确实拆分了每组(三个)转换的行,然后将它们绑定在一个循环中,但它非常慢,因为我的数据集是1gb。

var1   var2  var3
ad     sa     4
b1     b2     b3
5      6      2
b4     b5     b6
.      .      .
.      .      .
.      .      .

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

来自recast的{​​{1}}函数非常适合这一点。但在使用之前,您需要将reshape2 - 列转换为更好的分组变量:

index

现在您的数据如下所示:

# transform 'index' into a grouping variable
dat$index <- cumsum(c(0, head(dat$index, -1) > tail(dat$index, -1)))

# reshape into the new format
library(reshape2)
recast(dat, variable + index ~ v1, id.var = c('v1','index'))[,3:5]