Rで2つのdata.frameをマージしているときに、些細な問題に直面しています.
同じ列名を持つ 2 つの data.frames をマージしようとしていますが、R で同じ名前の列を 2 つの別々の列にするのではなく、1 つの列としてマージする必要があります。
通常、data.frames のマージ中に R が同じ名前の列に遭遇すると、接尾辞 "x" と "y" を持つ 2 つの個別の変数が作成されます。マージ コマンドでこれを指定して、異なるデータセット内の類似した名前の列を 1 つの列/変数として扱う方法はありますか?
例として使用できるコード:
x = data.frame(id = c("a","c","d","g"),
maths = c(1,3,4,7), physics = c(1,3,4,7), chemistry = c(1,3,4,7),
english = c(1,3,4,7))
y = data.frame(id = c("b","c","d","e","f"),
maths = c(5,6,8,9,7), physics = c(5,6,8,9,7), chemistry = c(5,6,8,9,7),
english = c(5,6,8,9,7))
xy <- merge(x, y, by = "id")
同じ名前の列から NA 以外の値を取得するマージされたデータ セットに新しい変数を作成できる同じ回避策がありますが、多数の列がある場合、これは非常に非効率的です。
この問題は、merge() ステートメントが 2 つの同じ名前の列を 1 つの列に結合するプロの SAS ユーザーによって通知されたため、SAS ユーザーはこの問題に関連しています。
また、以下の回答の1つとして、次を使用する場合:
xy <- merge(x, y, by = intersect(names(x), names(y)))
2 つの data.frames の間に交差はありません。理想的には、2 つの data.frames id = c("c","d") の観測ごとに 2 つ、ここに 4 つの観測があることを望みます。
これについて私を助けてくれるプロのRユーザーに感謝します。
ありがとう!