[R] "Conditional" match?

r user ruser2006 at yahoo.com
Fri Jan 27 21:57:07 CET 2006


I have two datasets, big and small.

s_date<-c(‘2005-12-02’, ‘2005-12-01’,
‘2004-11-02’,’2002-10-05’,’2000-12-15’)
s_id<-c(‘a’,’a’,’b’,’c’,’d’)

b_date<- c(‘2005-12-31’, ‘2005-12-31’,
‘2004-12-31’,’2002-10-05’,’2001-10-31’,’1999-12-31’)

b_id<-c(‘a’,’b’,’c’,’d’,’e’,’c’)

small<-data.frame(date_=as.Date(s_date),id=s_id)
big<-data.frame(date_=as.Date(b_date),id=b_id)

For each row in “big”, I want to look for a match in
small where two conditions are met:

a.	big$id=small$id
b.	big$date_>=small$date

If  match is found, I wish to return the value of the
date.  If no match is found, I want NA.  

If more than 1 match is found, I wish to return the
match where small$date is greatest.

I’m thinking I might be able to do this using the
match function, and by sorting the “small” dataset by
date_ in descending order.  

However, I do not know how to make the match
conditional on big$date_>=small$date_.

Any help is appreciated.




More information about the R-help mailing list