[R] Merging Data.Tables on conditions other than equality
Brian Trautman
btrautman84 at gmail.com
Wed Feb 25 22:24:38 CET 2015
I have two tables that I would like to join together in a way equivalent to
the following SQL. Note that I'm using a "greater than" statement in my
join, rather than checking for equality.
require(sqldf)
require(data.table)
dt <- data.table(num=c(1, 2, 3, 4, 5, 6), char=c('A', 'A', 'A', 'B', 'B',
'B'))
dt_out_sql <- sqldf('
select dtone.num as num1, dttwo.num as num2, dttwo.char
from dt as dtone INNER join dt as dttwo on
(dtone.char = dttwo.char) and
(dtone.num *>=* dttwo.num)
')
I realize that I can use the below code, but would like to do the merging
and filtering in the same step (my data sets are large enough for
performance/memory concerns to come into play.
dt_out_r <- merge(x=dt, y=dt, by = c('char'), allow.cartesian=TRUE)
dt_out_r <- dt_out_r[num.x >= num.y]
Thank you very much!
[[alternative HTML version deleted]]
More information about the R-help
mailing list