[R] Merge two dataframe with "by", and problems with the common field

Jim Lemon jim at bitwrit.com.au
Tue May 7 08:58:32 CEST 2013


On 05/07/2013 04:33 PM, jpm miao wrote:
> Hi,
>
>     From time to time I merge two dataframes with possibly a common field.
> Then the common field is no longer present,but what are present fieldname.x
> and fieldname.y. How can I fix the problem so that I can still call by the
> orignal fieldname? If you don't understand my problem, please see the
> example below.
>
>     Thanks
>
> Miao
>
>
>> d1
>    a b c
> 1 1 4 5
> 2 2 5 6
> 3 3 6 7
>> d2
>    d a  f b
> 1 6 1  8 4
> 2 7 2  9 5
> 3 8 3 10 6
>> d3<-merge(d1, d2, by="b")
>> d3
>    b a.x c d a.y  f
> 1 4   1 5 6   1  8
> 2 5   2 6 7   2  9
> 3 6   3 7 8   3 10
>> d3["a"]
> Error in `[.data.frame`(d3, "a") : undefined columns selected
>> d3["a.x"]
>    a.x
> 1   1
> 2   2
> 3   3
>
Hi jpm miao,
Because you have a column named "a" in both data frames, the merge 
function adds ".x" and ".y" to the fields with common names. You could 
change the name of one column, for example, change the name of the "a" 
column in d2 to "e". You could also drop one of the "a" columns in this 
case as the two columns are identical.

d3<-merge(d1, d2[,c("d","f","b")], by="b")

Jim



More information about the R-help mailing list