我已经看到了一些有关此问题的问题,但我无法理解任何答案,而且它们似乎都是封闭的线程。
我要做的是连接两个具有不同尺寸但有两个共同列的矩阵。如果两个矩阵中的任何两行在两列中具有相同的值,那么我想要追加这两行,否则我想将该行添加到矩阵的底部。
例如: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
这样匹配的行就会被连接起来,而任何不匹配的行都会被添加到最后。
有人会知道怎么做吗?任何帮助将不胜感激。
由于
麦克
答案 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)