[R] how to join two arrays using their column names intersection

BXC (Bendix Carstensen) bxc at steno.dk
Wed Jan 31 13:18:50 CET 2007


Here is a workable solution:

df1 <- data.frame(ar1)
df2 <- data.frame(ar2)
cmn <- intersect(names(df1),names(df2))
rbind(df1[,cmn],df2[,cmn])

Best
Bendix
______________________________________________

Bendix Carstensen
Senior Statistician
Steno Diabetes Center
Niels Steensens Vej 2-4
DK-2820 Gentofte
Denmark
+45 44 43 87 38 (direct)
+45 30 75 87 38 (mobile)
+45 44 43 73 13 (fax)
bxc at steno.dk   http://www.biostat.ku.dk/~bxc
______________________________________________

> -----Original Message-----
> From: Federico Abascal [mailto:fabascal at cnb.uam.es] 
> Sent: Tuesday, January 30, 2007 12:28 PM
> To: r-help at stat.math.ethz.ch
> Subject: [R] how to join two arrays using their column names 
> intersection
> 
> Dear all,
> 
> I have a problem that may be someone of you can help. I am a 
> newbie and do not find how to do it in manuals.
> 
> I have two arrays, for example:
> 
> ar1 <- array(data=c(1:16),dim=c(4,4))
> ar2 <- array(data=c(1:16),dim=c(4,4))
> colnames(ar1)<-c("A","B","D","E")
> colnames(ar2)<-c("C","A","E","B")
> 
> > ar1
>      A B  D  E
> [1,] 1 5  9 13
> [2,] 2 6 10 14
> [3,] 3 7 11 15
> [4,] 4 8 12 16
> > ar2
>      C A  E  B
> [1,] 1 5  9 13
> [2,] 2 6 10 14
> [3,] 3 7 11 15
> [4,] 4 8 12 16
> 
> 
> I would like to join both arrays only for the columns present in both
> ar1 and ar2 (the intersection). I would like to obtain this:
>      A B  E
> [1,] 1 5 13
> [2,] 2 6 14
> [3,] 3 7 15
> [4,] 4 8 16
> [5,] 5 13  9
> [6,] 6 14 10
> [7,] 7 15 11
> [8,] 8 16 12
> 
> (rows 5-8 correspond to ar2)
> 
> I have tried several things but I am unable to accomplish it. 
> Any experienced user could give me some advice, please?
> 
> I have another question: how can I sort the columns of an 
> array according to its column names (for ar2, change CAEB to ABCE)?
> 
> Thanks in advance!
> Federico
> 
> 
>



More information about the R-help mailing list