[R] An R clause to bind dataframes under certain contions

David Winsemius dwinsemius at comcast.net
Sat Jan 26 22:04:30 CET 2008


"Henrique Dallazuanna" <wwwhsd at gmail.com> wrote in
news:da79af330801261222u51bbe74m3109625b77cd2b77 at mail.gmail.com: 

> Try this:
> merge(x, y, all=T)

That will give <NA>'s in the non-matching rows, which may be what the 
OP wanted. If, on the otherhand, only the rows with matches were 
desired, the usage might be:

A.B <- merge(X, Y, by = c("A","B"))
A.B

mymat<-data.frame(
    x=c(1,1,1,2,2,2,3,3,3),
    y=c(1,2,3,1,2,3,1,2,3),
    z=c(1,2,3,4,5,6,7,8,9))

 mymat2<-data.frame(
    x=c(1,1,1,2,2,2,3,3,3),
    y=c(1,2,3,1,2,3,1,4,3),
    zz=c(1,7,3,5,5,6,10,8,20))

 mymerge1 <- merge(mymat, mymat2, all=TRUE)

> mymerge1
   x y  z zz
1  1 1  1  1
2  1 2  2  7
3  1 3  3  3
4  2 1  4  5
5  2 2  5  5
6  2 3  6  6
7  3 1  7 10
8  3 2  8 NA
9  3 3  9 20
10 3 4 NA  8

mymerge2 <- merge(mymat, mymat2, by=c("x","y"))

> mymerge2
  x y z zz
1 1 1 1  1
2 1 2 2  7
3 1 3 3  3
4 2 1 4  5
5 2 2 5  5
6 2 3 6  6
7 3 1 7 10
8 3 3 9 20


-- 
David Winsemius

> 
> On 26/01/2008, zhihuali <lzhtom at hotmail.com> wrote:
>>
>> Hi netters,
>> Suppose I have two data frames X and Y. X has three colnames A, B
>> and C. Y has three colnames A,B and D. 
>>
>> I want to combine them into one matrix, joining the rows having the
>> same A and B values (X$A==Y$A and X$B = Y$B). So the resulting
>> dataframe has four variables/columns: A,B,C and D. 
>>
>> I was wondering what's the best way to do it in R.  Could anyone
>> give me some advice? 
>>
>> Thanks!
>>
>> Zhihua Li



More information about the R-help mailing list