On Mar 12, 2011, at 4:14 PM, flymer wrote:
Dear All,
Debuting in R, I'm facing a problem.
I have 2 vectors, say 'a' et 'b', and I'd like to merge them
according to
the proximity of their variable 'time'.
How to do to keep elements which satisfy (for example) 'a$time-b
$time<0.5'?
For example :
a
time x
1 1.0 4
2 2.2 5
3 5.2 6
b
time y
1 0 1
2 1 3
3 2 5
4 4 7
5 5 9
I'd like to get :
time x y
1 1.0 4 3
2 2.2 5 5
3 5.2 6 9
I thought using the fonction 'merge'...
There are often SQL magical incantation to acheive such, and there is
an `sqldf` package that might help, but I am not competent with it.
Here is a base R solution using three functions (six, if you count
"$", "<", and "-":
?expand.grid
?rep
?"["
dfrm<- expand.grid(a$time, b$time)
dfrm$x <- a$x # by virtue of recycling
dfrm$y <- rep(b$y, each=3)
> dfrm[abs(dfrm$Var1-dfrm$Var2) < 0.5, ]
Var1 Var2 x y
4 1.0 1 4 3
8 2.2 2 5 5
15 5.2 5 6 9
--
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@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.