Jika Anda mengetahui jawaban atas pertanyaan ini di tempat lain, harap beri tahu saya, tetapi saya mencari dan membaca sejumlah besar topik bergabung terkait data.table serta intro paket dan FAQ dan masih belum menemukan jawabannya. Pada dasarnya saya mencari sesuatu seperti gabungan kiri yang fleksibel dan saya berpikir mengatur kunci secara langsung bahwa A[B] akan berhasil, tetapi ternyata tidak.
Pada dasarnya saya memiliki dua kumpulan data, A dan B (contoh di bawah). Saya ingin menambahkan data di A ke B berdasarkan pencocokan id dan tahun mereka, sehingga menghasilkan sesuatu seperti C. Ada beberapa hal yang membedakannya dari contoh yang pernah saya lihat. Pertama, ini satu ke banyak berdasarkan beberapa kunci (di sini id dan tahun). Kedua, saya tidak ingin semua kemungkinan kombinasi, artinya jika informasi di A tidak diperlukan di B maka informasi itu tidak ditambahkan. Ketiga, saya ingin mempertahankan B jika data di A tidak tersedia (jadi bukan hanya persimpangannya).
Sekali lagi, saya pikir sesuatu seperti mengatur kunci di A dan B menjadi id dan tahun, lalu C = A[B] akan memberi saya jawabannya, tetapi saya mendapatkan pesan kesalahan yang mengatakan bahwa lebih banyak (banyak, banyak) baris lagi yang ada di Hasilnya, memicu peringatan Cartesian. Namun, hasilnya harus memiliki jumlah baris yang sama persis dengan B, jadi tidak jelas bagi saya apa kesalahan yang saya lakukan.
Setiap saran atau wawasan sangat dihargai!
A
# id year var1 var2
# 1 2010 10 20
# 1 2011 70 20
# 1 2012 90 30
# 1 2013 40 50
# 2 2010 30 30
# 2 2011 50 60
# 2 2012 80 10
# 2 2013 90 80
# 3 2010 50 50
# 3 2011 20 40
# 3 2012 90 30
# 3 2013 60 70
B
# id2 year id var3
# 1 2010 1 20
# 1 2011 1 20
# 1 2012 3 30
# 1 2013 4 50
# 2 2010 1 30
# 2 2011 1 60
# 2 2012 1 10
# 2 2013 2 80
# 3 2010 3 50
# 3 2011 2 40
# 3 2012 3 30
# 3 2013 2 70
C
# id2 year id var3 var1 var2
# 1 2010 1 20 10 20
# 1 2011 1 20 70 20
# 1 2012 3 30 90 30
# 1 2013 4 50 NA NA
# 2 2010 1 30 10 20
# 2 2011 1 60 70 20
# 2 2012 1 10 90 30
# 2 2013 2 80 90 80
# 3 2010 3 50 50 50
# 3 2011 2 40 50 60
# 3 2012 3 30 90 30
# 3 2013 2 70 90 80
dput
lain kali!), tetapi apakahmerge(x = A, y = B, by.x = c("id", "year"), by.y = c("id2", "year"), all.y = T)
yang Anda cari? - person Gregor Thomas   schedule 02.10.2014overflow::soread()
jika Anda benci menyalin/menempel dari SO. Ini sangat nyaman. - person Rich Scriven   schedule 02.10.2014