You mean x.dt[, y := y.dt[.SD, on=.(date), roll=TRUE, x.y]]
? On Wed, Feb 14, 2018 at 3:18 PM, Bernstein, Elliot J < [email protected]> wrote: > How do I execute a rolling join when one table has groups, and the other > does not? For example: > > > > x.dt <- as.data.table( > > expand.grid(date = seq(as.Date("2017-01-01"), as.Date("2017-12-31"), > "days"), > > group = c("A", "B") > > ) > > ) > > x.dt[, x := rnorm(.N)] > > setkey(x.dt, group, date) > > > > y.dt <- data.table(date = seq(as.Date("2017-01-01"), > as.Date("2017-12-31"), "months")) > > y.dt[, y := month(date)] > > setkey(y.dt, date) > > > > result <- y.dt[x.dt, roll = TRUE] > > > > The last line fails because “group” is part of the key in x.dt, but not > y.dt: > > > > Error in bmerge(i, x, leftcols, rightcols, io, xo, roll, rollends, > nomatch, : > > typeof x.date (double) != typeof i.group (integer) > > > > I would like the value of y in each row of the result to be the month > number (from y.dt), regardless of the value of the group column. > > > > Thanks. > > > > - Elliot > > > > _______________________________________________ > datatable-help mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/ > listinfo/datatable-help >
_______________________________________________ datatable-help mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
