0

これについていくつかの質問を見てきましたが、答えを理解できず、すべてクローズドスレッドのようです.

私が探しているのは、次元が異なるが 2 つの共通の列を持つ 2 つの行列を結合することです。2 つの行列の 2 つの行の 2 つの列に同じ値がある場合は、それらの 2 つの行を追加します。それ以外の場合は、その行を行列の一番下に追加します。

例: マトリックス 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 と 2 の最初の行は、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 に答える