[R] Merge data under conditions
David Winsemius
dwinsemius at comcast.net
Sat Mar 12 23:04:20 CET 2011
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
More information about the R-help
mailing list