首页 > 解决方案 > 如何在不混淆R中的顺序的情况下将一列的每个值添加到另一列的相应行下方

问题描述

我找不到这个问题的解决方案/答案,因此问你们:-)

我有以下合并挑战,如下例所示:如何在不混淆 R 中的顺序的情况下将一列的每个值(每个任意值,不能排序)添加到另一列的相应行下方?我无法对列进行排序,值是任意的。这只是使系统清晰的示例。

之前的数据框:

         column1                column2
valueColumn1row1       valueColumn2row1
valueColumn1row2       valueColumn2row2
               .                      .
               .                      .
               .                      .

之后的数据框:

          finalcolumn            
     valueColumn1row1
     valueColumn2row1       
     valueColumn1row2
     valueColumn2row2 
               .                      
               .                      
               .                      

有什么建议么?提前致谢!

标签: rmerge

解决方案


一种方法是使用matrix[matrix]子集:

# create example data
df <- data.frame(
    col1 = letters[1:6],
    col2 = letters[21:26],
    stringsAsFactors = F
)

# convert data to a matrix
dfm <- as.matrix(df)

# create a subsetting-matrix of the elements that you want, in the order that you want
j <- ncol(dfm)
sub <- matrix(c(rep(1:nrow(df), each=j), rep(1:j, nrow(df))), ncol=2)

# create the desired column
dfm[sub]

示例数据

> df
  col1 col2
1    a    u
2    b    v
3    c    w
4    d    x
5    e    y
6    f    z

结果

> data.frame(dfm[sub])
   dfm.sub.
1         a
2         u
3         b
4         v
5         c
6         w
7         d
8         x
9         e
10        y
11        f
12        z

推荐阅读