如何在不混淆R中的顺序的情况下将一列的每个值添加到另一列的相应行下面

问题描述 投票:2回答:1

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

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

以前的数据帧:

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

数据帧后:

          finalcolumn            
     valueColumn1row1
     valueColumn2row1       
     valueColumn1row2
     valueColumn2row2 
               .                      
               .                      
               .                      

有什么建议?提前致谢!

r merge
1个回答
0
投票

一种方法是使用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
© www.soinside.com 2019 - 2024. All rights reserved.