[R] merging data frames with matrix objects when missing cases

johannes rara johannesraja at gmail.com
Fri Sep 18 19:41:46 CEST 2009


This has something to do with your data.frame structure

see

> str(df1)
'data.frame':	3 obs. of  2 variables:
 $ a : int  1 2 3
 $ X1: 'AsIs' int [1:3, 1:2] 1 2 3 4 5 6
> str(df2)
'data.frame':	2 obs. of  2 variables:
 $ a : int  1 2
 $ X2: 'AsIs' int [1:2, 1:2] 11 12 13 14

This seems to work

> df1<-data.frame(a=1:3, b = 1:3, c = 4:6)
> str(df1)
'data.frame':	3 obs. of  3 variables:
 $ a: int  1 2 3
 $ b: int  1 2 3
 $ c: int  4 5 6
> df2<-data.frame(a=1:2, d = 11:12, e = 13:14)
> str(df2)
'data.frame':	2 obs. of  3 variables:
 $ a: int  1 2
 $ d: int  11 12
 $ e: int  13 14
> merge(df1,df2)
  a b c  d  e
1 1 1 4 11 13
2 2 2 5 12 14
> merge(df1, df2, all=T)
  a b c  d  e
1 1 1 4 11 13
2 2 2 5 12 14
3 3 3 6 NA NA
>

2009/9/18 Kari Ruohonen <kari.ruohonen at utu.fi>:
> Hi,
> I have faced a problem with the merge() function when trying to merge
> two data frames that have a common index but the second one does not
> have cases for all indexes in the first one. With usual variables R
> fills in the missing cases with NA if all=T is requested. But if the
> variable is a matrix R seems to insert NA only to the first column of
> the matrix and fill in the rest of the columns by recycling the values.
> Here is a toy example:
>
>> df1<-data.frame(a=1:3,X1=I(matrix(1:6,ncol=2)))
>> df2<-data.frame(a=1:2,X2=I(matrix(11:14,ncol=2)))
>> merge(df1,df2)
>  a X1.1 X1.2 X2.1 X2.2
> 1 1    1    4   11   13
> 2 2    2    5   12   14
> # no all=T, missing cases are dropped
>
>> merge(df1,df2,all=T)
>  a X1.1 X1.2 X2.1 X2.2
> 1 1    1    4   11   13
> 2 2    2    5   12   14
> 3 3    3    6   NA   13
> # X2.1 set to NA correctly but X2.2 set to 13 by recycling.
>
> Can I somehow get the behaviour that the third row of the second matrix
> X2 in the above example would be filled with NA for all columns? None of
> the merge() options does not seem to provide a solution.
>
> regards, Kari
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list