How to extact all columns when using data.table in R? -


library(data.table) 

i trying this.

wd <- structure(list(year = c(2006l, 2006l, 2006l), day = c(361l, 361l,  360l), hour = c(14l, 8l, 8l), mint = c(30l, 0l, 30l), valu1 = c(0.5,  0.3, 0.4), date = structure(c(1167229800, 1167206400, 1167121800 ), class = c("posixct", "posixt"), tzone = "utc")), .names = c("year",  "day", "hour", "mint", "valu1", "date"), row.names = c(na, -3l ), class = "data.frame")  wg <- c("2006/12/27 14:23:59", "2006/12/27 16:47:59", "2006/12/27 19:12:00") w <- c("0.4", "0.2", "0.5") wf=data.frame(wg,w) wg <- as.posixct(wf$wg, format = "%y/%m/%d %t", tz = "utc")  wg <- data.table(start = wg, end = wg) setkey(wg) ## same `wd` adding +/- 30 minutes  setdt(wd)[, `:=`(start = date - 1800l, end = date + 1800l)] ## run foverlaps , extract match `valu1` column foverlaps(wd, wg, nomatch = 0l)[, .(wddate = date, valu1, wgdate = start)]                     wddate valu1              wgdate    1: 2006-12-27 14:30:00   0.5 2006-12-27 14:23:59 

as can see in final results valu1 extracted wd extract corresponding values w in wf want this:

                     wddate valu1              wgdate      w     1: 2006-12-27 14:30:00   0.5 2006-12-27 14:23:59      0.4     

any idea welcome

real data:

  head(wf)        date1  date2        date3n               wg         w    whyt 1     <na> 2003-01-01      <na>                <na>        na   na 2     <na> 2003-01-02      <na>                <na>        na   na 3     <na> 2003-01-03      <na> 2003/01/03 10:30:00 0.2137352 0.34 4     <na> 2003-01-04      <na>                <na>        na   na 

facing problem here:

in previous answer i've created wg because provided wg single vector. if have data set called wf, whole proccess not needed. need adjust wf correctly , run foverlaps. in other words, forget wg , following

setdt(wf)[, wg := as.posixct(wg, format = "%y/%m/%d %t", tz = "utc")] wf[, `:=`(start = wg, end = wg)] setkey(wf, start, end) setdt(wd)[, `:=`(start = date - 1800l, end = date + 1800l)]  foverlaps(wd, wf, nomatch = 0l)[, .(wddate = date, valu1, wgdate = start, w)] #                 wddate valu1              wgdate   w # 1: 2006-12-27 14:30:00   0.5 2006-12-27 14:23:59 0.4 

Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -