Menggabungkan numerik dan karakter dari kumpulan data yang berbeda

Saya mencoba menggabungkan dua kumpulan data. Kumpulan data 1 memiliki ca. 4000 baris dan Dataset 2 memiliki 132 baris. Saya ingin mencocokkan nama Brand di Kumpulan Data 2 dengan nama UPS di kumpulan data 1. Jadi Semua UPS juga memiliki Brands yang sesuai di 1. Saya mencoba menggabungkan keduanya dengan merge. Namun, sejauh ini saya tidak berhasil menggabungkannya.

DataSet 01: Dimana UPS berbentuk numerik

  UPS         WEEK  AP
1 1111112016    1   385.22
2 1111112016    2   221.63
3 1111112016    3   317.47
4 1111112016    4   173.71
5 1111112016    5   269.55

Kumpulan data 02:

  UPC        Brand
1 1111112016 Dove
2 1111112440 Dove
3 1111112480 Dove
4 1111112501 Dove
5 1111132008 Lever
6 1111132012 Lever
7 1111132048 Lever
8 1111132122 Lever

Inilah cara saya mencobanya sejauh ini:

Brand = c(unique(UB$Brand))
UPS = c(unique(PAW2$UPS))
PAWn = merge(PAW, UB, by.x = "UPS", by.y = "Brand")

Saya sadar ada postingan lain di luar sana. Namun sejauh ini mereka tidak membantu.


person Christoph P.    schedule 16.10.2016    source sumber
comment
Bukankah seharusnya by.y = "UPC"? Anda tidak mendapat apa-apa karena kolom UPS dari PAW tentu saja tidak pernah sama dengan kolom Brand dari UB.   -  person nicola    schedule 16.10.2016


Jawaban (1)


Berdasarkan uraian Anda, saya rasa Anda memerlukan:

 merge(PAW, UB, by.x = "UPS", by.y = "UPC", all.x = TRUE)

untuk mendapatkan apa yang kamu inginkan. Seperti yang sudah dikatakan Nicola di komentar, satu-satunya cara Anda dapat mencocokkan nama Brand di UB dengan kode UPS di PAW adalah melalui pencocokan dengan kode UPC di UB.

Ini juga berfungsi ketika UB$UPC adalah variabel karakter dan PAW$UPS adalah variabel numerik.

Dengan menambahkan all.x = TRUE semua observasi di PAW dikembalikan, meskipun observasi tersebut tidak memiliki nilai yang cocok di UB.

person h3rm4n    schedule 16.10.2016
comment
Saya mencobanya dan saya masih mendapatkan kesalahan: Error in fix.by(by.y, y): 'by' harus menentukan kolom unik yang valid - person Christoph P.; 16.10.2016
comment
Ini berfungsi pada contoh data yang Anda berikan dalam pertanyaan. Apa nama kolom Anda? - person h3rm4n; 16.10.2016
comment
Saya bisa menyelesaikannya. Tampaknya seseorang tidak perlu menetapkan nilai spesifik untuk argumen penggabungan, yang nantinya akan digunakan by.x atau by.y. Anda tinggal menentukan kolom mana yang harus dipilih. Tadi saya bilang PAW_N = gabung(PAW, UB, by.x = UPS, by.y = UPC, all.x = TRUE) - person Christoph P.; 16.10.2016