私はRの初心者ユーザーです。次の問題を抱えています。データフレームのいくつかの列を別のデータフレームで更新する
私は2つのデータフレームをマージしようとしています。私は、2つのデータフレームで、マージしている間に5つの別の重複する列を持っています。私は、これらのオーバーラップする変数をあるデータフレーム内で他のデータフレームに更新しようとしています。私はこのウェブサイトを検索し、いくつかの答えを見つけましたが、私の場合はどれも効率的ではありません。理由は、私は更新するいくつかの列を持っていると第二に、私は最後に100ヶ月のデータをマージする、私はいつも重複している列の名前を知っていることはありません。以前のソリューションは、一般的にコードの各列の名前を書き込むことで更新されますが、名前を使用せずに行う方法を見つけようとしています。一例として、
は、私は年齢とd1だけtuse1とtuse2をマージしたい
tuse1
age d1 a1 a2 a3 a4 a5
1 89 2 3 3 NA NA
2 34 3 4 5 NA NA
tuse2
age d1 a1 a2 a3 a4 a5 a6
1 89 2 3 3 3 6 2
2 34 3 4 5 4 7 2
3 32 4 3 3 6 6 6
...言うことができます。コード内の列名を使用せずにtuse1のNA変数をtuse2で更新できるコードが必要です。
はここで、そのために私のコードです:
key = c("age", "d1")
comNam = intersect(names(tuse1), names(tuse2))
comNam = comNam[3:length(comNam)]
merge_second_age = merge(x = tuse1, y = tuse2, all = TRUE, by = c(key))
for(i in comNam){
left <- paste(i, ".x", sep="")
right <- paste(i, ".y", sep="")
merge_second_age$i = with(merge_second_age, factor(ifelse(is.na(left), right, left)))
merge_second_age$left = NULL; merge_second_age$right = NULL
merge_second_age$left = NULL; merge_second_age$right = NULL
}
このコードは、所望の出力を与えるものではありません、残念ながらエラーなしで働いているようだけど。
次のように私は見ています所望の出力は次のようになります。
age d1 a1 a2 a3 a4 a5 a6
1 89 2 3 3 3 6 2
2 34 3 4 5 4 7 2
私は任意の助けをいただければ幸いです。
ベスト Dilsat
は、あなたの所望の出力を提供することができますか? – 989
希望の出力例がありますか?たとえば、age = 2、d1 = 34の2つのdfsで異なる 'a2'の値はどうなりますか? – jalapic
こんにちは@ m0h3n、お返事ありがとうございました。私はちょうど私の質問を編集し、希望の出力を追加しました。私は本当に元のデータセットのようにコード内で変数名を使用することを避けようとしています。これらの重複する列を見つけて更新するコードが必要です。百万回ありがとう!:) – Dilsat