在r中按行名连接两个不同大小的矩阵

时间:2013-09-27 08:15:19

标签: r join matrix dimensions

我已经看到了一些有关此问题的问题,但我无法理解任何答案,而且它们似乎都是封闭的线程。

我要做的是连接两个具有不同尺寸但有两个共同列的矩阵。如果两个矩阵中的任何两行在两列中具有相同的值,那么我想要追加这两行,否则我想将该行添加到矩阵的底部。

例如:Matrix 1

Matrix 1
Col1 Col2 Col3 Col4
a     b    c    d
e     f    g    h
i     j    k    l

Matrix 2
Col1 Col3 Col5
a    c    e
g    f    m

在上面的例子中,矩阵1和第二行中的第一行在Col1和Col3中具有相同的条目,而第2行和第3行则不同。

我希望输出看起来如下:

NewMatrix
Col1 Col2 Col3 Col4 Col5
a     b   c    d    e
e     f   g    h    0
i     j   k    l    0
g     0   f    0    m

这样匹配的行就会被连接起来,而任何不匹配的行都会被添加到最后。

有人会知道怎么做吗?任何帮助将不胜感激。

由于

麦克

1 个答案:

答案 0 :(得分:0)

a <- merge(Matrix1, Matrix2, 
           by.Matrix2 = c(Matrix2[,1], Matrix2$[,3]),
           by.Matrix1 = c(Matrix1[,1], Matrix1[,3]),
           all = TRUE)

更新,来自@Ananda的更清洁版本:

a <- merge(Matrix1, Matrix2, by = c("Col1", "Col3"), all = TRUE)