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

时间:2018-09-07 20:01:34

标签: r merge

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

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

之前的数据框:

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

之后的数据帧:

          finalcolumn            
     valueColumn1row1
     valueColumn2row1       
     valueColumn1row2
     valueColumn2row2 
               .                      
               .                      
               .                      

有什么建议吗?预先感谢!

1 个答案:

答案 0 :(得分: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