私が試みていることを正確に答える以前の質問を見つけることができませんでした。複数の条件で2つのテーブルをマージする
がマージに関係はなく、複数の他の列であることを保持する必要がある、
chr position effect.exposure ...
1 12345 A ...
2 54321 G ...
2 6789 C ...
3 9876 D ...
DF1
DF2
私のデータの一般的なフォーマットであるchr position effect.outcome other ...
1 12345 A C ...
2 54321 T G ...
3 12314 C A ...
5 12321 C D ...
。
"chr"と "position"が厳密に同じ行をマージするだけでなく、df1の "effect.exposure"がdf2の "effect.outcome"または "other"と一致することを確認してください。重要なことに、 "effect.exposure"が "effect.outcome"または "other"と一致しない場合、その行を削除します。
"chr"と "position"を結合して結果データ内にそれぞれ1つの列しか持たせることはできませんが、2つの "エフェクト"と "その他"の列を最終的なデータテーブルに残しておきます。
更新:
は、問題を回避する方法を発見しました。 私がやったやり方は、2つのデータフレームを "chr"と "position"でマージすることです。ここから
new.df <- merge(df1, df2, by = c("chr", "position"))
「effect.exposureは」「effect.outcome」または「その他」のいずれかに等しい場合、私は、このデータフレームのサブセットを撮影しました。
final.df <- new.df[new.df$effect.exposure == new.df$effect.outcome |
new.df$effect.exposure == new.df$other, ]
これは最も効率的な方法ではないかもしれませんが、完全に機能します。
[R 2つの基準のいずれかが一致したときに2つのデータフレームをマージ]の可能な重複(https://stackoverflow.com/質問/ 38753092/r-merge-two-data-frames-two-criteria-of-two-criteria-matchesの場合) – duckmayr