[R] matching vectors against vectors

Pierre Kleiber pkleiber at honlab.nmfs.hawaii.edu
Wed Mar 30 01:46:33 CEST 2005


merge() may be just what you want.

    Cheers, Pierre

Piet van Remortel wrote:
> Hi all.
> 
> I have a re-occuring typical problem that I don't know how to solve 
> efficiently.
> 
> The situation is the following:   I have a number of data-sets 
> (A,B,C,...) , consisting of an identifier (e.g. 11,12,13,...,20) and a 
> measurement (e.g. in the range 100-120).   I want to compile a large 
> table, with all availabe identifiers in all data-sets in the rows, and a 
> column for every dataset.
> 
> Now, not all datasets have a measurement for every identifier, so I want 
> NA if the set does not contain the identifier.
> 
> an example for a single dataset:
> 
> #all identifiers
>  > rep <- c(10:20)
> 
> #Identifiers in my dataset (a subset of rep)
>  > rep1 <- c(12,13,15,16,17,18)
> 
> #measurements in this dataset
>  > rep1.r <- c(112,113,115,116,117,118)
> 
> #a vector which should become a column in the final table, now 
> containing all NAs
>  > res <- rep(NA,10)
> 
> #the IDs and values of my dataset together
>  > data <- cbind(rep1, rep1.r)
> 
> data looks like this:
>      rep1 rep1.r
> [1,]   12    112
> [2,]   13    113
> [3,]   15    115
> [4,]   16    116
> [5,]   17    117
> [6,]   18    118
> 
> Now, I want to put the values 112, 113, 115,... in the correct rows of 
> the final table, using the identifiers as an indicator of which row to 
> put it in, so that I finally obtain:
> 
> rep     res
> 10    NA
> 11    NA
> 12    112
> 13    113
> 14    NA
> 15    115
> 16    116
> 17    117
> 18    118
> 19    NA
> 20    NA
> 
> I try to avoid repeating 'which' a lot and filling in every identifier's 
> observation etc, since I will be doing this for thousands of rows at 
> once.    There must be an efficient way using factors, tapply etc, but I 
> have trouble finding it.  Ideal would be if this could be done in one 
> go, instead of looping.
> 
> Any suggestions ?
> 
> Thanks,
> 
> Piet
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 

-- 
-----------------------------------------------------------------
Pierre Kleiber, Ph.D       Email: pkleiber at honlab.nmfs.hawaii.edu
Fishery Biologist            Tel: 808 983-5399 / (hm)808 737-7544
NOAA Fisheries Service - Honolulu Laboratory    Fax: 808 983-2902
2570 Dole St., Honolulu, HI 96822-2396
-----------------------------------------------------------------
  "God could have told Moses about galaxies and mitochondria and
   all.  But behold... It was good enough for government work."




More information about the R-help mailing list