首页 > 解决方案 > 在 R 中从几列中制作一个大列

问题描述

我有一个格式有点不幸的数据框。我有几个值应该是表格格式的一列的一部分,如下所示:

X_1     X_2     X_3             X_4             X_5     
Wasser  Strand  Zangen          Beine           Schmerz 
Wasser  Meer    rot             Steine          beißen  
Rot     Lecker  Restaurant      Teuer           Gourmet 
Zellen  Leid    Schmerzen       Chemotherapie   Tot 
rot     Krallen tödlich         Schmerzen       schlimm 
Hummer  salz    sternzeichen    krankheit       rot 
Wasser  Meer    Sternzeichen    Krankheit       Tumor

我想让我的数据框看起来“整洁”,因此,我想将几​​列堆叠成一列,如下所示:

X_1
Wasser
Wasser
Rot
Zellen
rot
Hummer
Wasser
Strand
Meer
Lecker
Leid
Krallen
....

这需要对几个“块”进行。有没有办法在tidyverse框架内做到这一点?我试着弄乱,gather()但我无法让它工作......

为了提供一个小代码片段,可以从中制作一个可重现的示例:

matrix(1:40, ncol = 8)

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    6   11   16   21   26   31   36
[2,]    2    7   12   17   22   27   32   37
[3,]    3    8   13   18   23   28   33   38
[4,]    4    9   14   19   24   29   34   39
[5,]    5   10   15   20   25   30   35   40

我想要的结果是这样的:

      [,1] [,2]
 [1,]    1   21
 [2,]    2   22
 [3,]    3   23
 [4,]    4   24
 [5,]    5   25
 [6,]    6   26
 [7,]    7   27
 [8,]    8   28
 [9,]    9   29
[10,]   10   30
[11,]   11   31
[12,]   12   32
[13,]   13   33
[14,]   14   34
[15,]   15   35
[16,]   16   36
[17,]   17   37
[18,]   18   38
[19,]   19   39
[20,]   20   40

标签: rmultiple-columnstidyrtidyverse

解决方案


不需要 tidyverse。

从您以前的矩阵创建一个新矩阵.. 设置列数,并按列填充(byrow = FALSE)

m <- matrix(1:40, ncol = 8)
matrix(m, ncol = 2, byrow = FALSE)

      [,1] [,2]
 [1,]    1   21
 [2,]    2   22
 [3,]    3   23
 [4,]    4   24
 [5,]    5   25
 [6,]    6   26
 [7,]    7   27
 [8,]    8   28
 [9,]    9   29
[10,]   10   30
[11,]   11   31
[12,]   12   32
[13,]   13   33
[14,]   14   34
[15,]   15   35
[16,]   16   36
[17,]   17   37
[18,]   18   38
[19,]   19   39
[20,]   20   40

推荐阅读