我已经看到了一些有关此问题的问题,但我无法理解任何答案,而且它们似乎都是封闭的线程。
我要做的是合并两个矩阵,这两个矩阵有一个公共列,但其他列不同,行号明显不同。我应该通过检查任何行是否具有匹配的公共列列值来合并两个矩阵。
例如:Matrix 1
Matrix 1
Col1 Col2 Col3 Col4
a b c d
e f g h
i j k l
Matrix 2
Col1 Col5
a e
g f
在上面的例子中,矩阵1和第二行中的第一行在Col1和Col3中具有相同的条目,而第2行和第3行则不同。
我希望输出看起来如下:
NewMatrix
Col1 Col2 Col3 Col4 Col5
a b c d e
e f g h NA
i j k l NA
g NA NA NA f
这样匹配的行就会被连接起来,而任何不匹配的行都会被添加到最后。
有人会知道如何做到这一点吗?
答案 0 :(得分:1)
矩阵可以与data.frame
的类似地合并:
merge(matrix1, matrix2, all=TRUE)
# Col1 Col2 Col3 Col4 Col5
#1 a b c d e
#2 e f g h <NA>
#3 i j k l <NA>
#4 g <NA> <NA> <NA> f
结果将是data.frame
,但您始终可以将其转换回matrix
。