2016-04-03 51 views
0

Angenommen, ich habe zwei Dataseteine Spalte aus einem Datensatz zu einem anderen Daten-Set in R hinzufügen

ds1

NO ID  DOB   ID2 count 
1 4083 2007-10-01 3625 5 
2 4408 2008-07-01 3603 2 
3 4514 2007-07-01 3077 3 
4 4396 2008-05-01 3413 5 
5 4222 2003-12-01 3341 1 

ds2

loc share 
12 445 
23 4 
10 56 
1  1 
23 34 

I "share" Spalte von DS2 installiert werden soll, zu ds1, so dass es so aussehen würde

dsmerged

NO ID  DOB   ID2 count share 
1 4083 2007-10-01 3625 5  445 
2 4408 2008-07-01 3603 2  4 
3 4514 2007-07-01 3077 3  56 
4 4396 2008-05-01 3413 5  1 
5 4222 2003-12-01 3341 1  34 

ich versuchte merge als dsmerged < - merge (DS1 [c (1: 5)], DS2 [c (2)])

Aber was es tut, ist es den Datensatz dupliziert (5 * 5 = 25 Zeilen), während die Spalte "Freigabe" hinzugefügt wird. Ich will diese doppelten Werte natürlich nicht. Danke

+2

Sie nicht haben einen Schlüssel zu fusionieren? Es scheint, dass das "Nein" und "Lok" Ihr Schlüssel sein sollte? Und wenn Sie nur die Spalte teilen möchten und die Reihenfolge spielt keine Rolle, dann können Sie einfach 'ds1 $ share <- ds2 $ share 'machen, was ich für sehr unwahrscheinlich halte. – Psidom

Antwort

0

Wenn Sie wissen, dass die Zeilen die gleiche ID haben, dann können Sie nur

ds3 <- cbind(ds1, share = ds2$share) 

cbind aber es wäre besser, wenn Sie eine ID musste kommen auf.

+0

Danke :) es funktioniert! – Sanju

0

Mit dplyr

library(dplyr) 
bind_cols(ds1, ds2['share']) 

Oder mit data.table

setDT(ds1)[, share := ds2[["share"]]] 
Verwandte Themen