0

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

我要做的是加入两个具有不同维度但有两个公共列的矩阵。如果两个矩阵中的任何两行在两列中具有相同的值,我想附加这两行,否则我想将该行添加到矩阵的底部。

例如:矩阵 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

以便将匹配的行连接起来,而将任何不匹配的行简单地添加到末尾。

有人知道如何做到这一点吗?任何帮助,将不胜感激。

谢谢

麦克风

4

1 回答 1

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)
于 2013-09-27T15:52:27.023 回答