R 如何堆叠数据帧的行

R 如何堆叠数据帧的行,r,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

我无法将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
.        .       .       . 
.        .       .       . 
.        .       .       . 
  var1 var2 var3
1   ad   sa    4
2    5    6    2
3   b1   b2   b3
4   b4   b5   b6
我正在尝试转换数据,使v1成为我的colname,并且它们也被堆叠起来。我熟悉本机转置命令
t()
,并将colnames指定为第一行。但是,我不确定如何堆叠这些行。我确实将转置的每组行(三行)分解,然后将它们绑定到一个循环中,但速度非常慢,因为我的数据集是1gb

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

谢谢你的帮助

来自
restrape2
recast
功能非常适合于此。但在使用之前,您需要将
索引
-列转换为更好的分组变量:

# 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]

restrape2
中的
recast
函数非常适合于此。但在使用之前,您需要将
索引
-列转换为更好的分组变量:

# 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]

您应该能够使用
tidyr::spread
reformae2::dcast
(搜索类似于“从长到宽的数据”),但您可能需要首先创建一个
id
列来标识哪些行放在一起。如果您的行按您想要的方式排序,那么它可能简单到
0:(nrow(your_data)-1)%/%3
。您应该能够使用
tidyr::spread
restrape2::dcast
(搜索类似“从长到宽的数据”),但是,您可能需要首先创建一个
id
列来标识哪些行放在一起。如果您的行按您想要的方式排序,那么它可能简单到
0:(nrow(your_data)-1)%/%3
。谢谢!我想错了,但重铸后我仍然可以排序,结果会一模一样。谢谢!我想错了,但重铸后我仍然可以排序,结果会完全一样。