2016-10-16 2 views
0

Ich versuche, zwei Datensätze zu kombinieren. Datensatz 1 hat ca. 4000 Zeilen und Datensatz 2 hat 132 Zeilen. Ich möchte die Brand Namen in Datensatz 2 mit der UPS eins in Datensatz 1 übereinstimmen. So haben alle UPS die entsprechende Brands in 1 auch. Ich habe versucht, sie beide mit merge zusammenzuführen. Bisher war es mir jedoch nicht gelungen, sie zu verschmelzen.Zahlen und Zeichen aus verschiedenen Datensätzen zusammenführen

DataSet 01: Wo UPS numerisch ist

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 

Datensatz 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 

Dies ist, wie ich es versucht, so weit:

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

ich weiß, dass es sind andere Beiträge da draußen. Aber bis jetzt haben sie nicht geholfen.

+0

Sollte nicht 'by.y =" UPC "' sein? Du hast nichts, weil die 'UPS'-Spalte von' PAW' natürlich niemals gleich der 'Brand'-Spalte von' UB' ist. – nicola

Antwort

3

Basierend auf Ihrer Beschreibung, ich glaube, Sie brauchen:

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

zu bekommen, was Sie wollen. Wie Nicola bereits in den Kommentaren sagte, ist die einzige Möglichkeit, die Brand Namen in UB zu den UPS Codes in PAW ist über Abgleich mit den UPC Codes in UB.

Dies funktioniert auch, wenn UB$UPC eine Zeichenvariable ist und PAW$UPS eine numerische Variable ist.

Durch Hinzufügen von all.x = TRUE werden alle Beobachtungen in PAW zurückgegeben, auch wenn sie keine übereinstimmenden Werte in UB haben.

+0

Ich habe versucht, und ich bekomme immer noch den Fehler: Fehler in fix.by (by.y, y): 'durch' muss eine eindeutig gültige Spalte –

+0

Es funktioniert auf die Beispieldaten, die Sie in der Frage angegeben. Wie lauten Ihre Spaltennamen? – h3rm4n

+0

Ich konnte es lösen. Es scheint, dass man den Zusammenführungsargumenten, die später 'by.x' oder' by.y' verwendet werden, keine spezifischen Werte zuweisen muss. Sie können nur sagen, welche Spalte ausgewählt werden soll. Ich habe gerade PAW_N = merge (PAW, UB, von.x = "UPS", by.y = "UPC", all.x = TRUE) –

Verwandte Themen