R 使用data.table时如何提取所有列?

R 使用data.table时如何提取所有列?,r,data.table,R,Data.table,我正在努力做到这一点 library(data.table) 任何想法都欢迎 实际数据: wdDate valu1 WGDate w 1: 2006-12-27 14:30:00 0.5 2006-12-27 14:23:59 0.4 头部(wf) 日期1日期2日期3工作组w工作时间 1 2003-01-01不适用 2 2003-01-02不适用 3 2003-01-03

我正在努力做到这一点

library(data.table)
任何想法都欢迎

实际数据:

                     wdDate valu1              WGDate      w
    1: 2006-12-27 14:30:00   0.5 2006-12-27 14:23:59      0.4    
头部(wf)
日期1日期2日期3工作组w工作时间
1 2003-01-01不适用
2 2003-01-02不适用
3      2003-01-03       2003/01/03 10:30:00 0.2137352 0.34
4 2003-01-04不适用
这里面临一个问题:

我创建了
WG
,因为您将
WG
作为一个向量提供。如果您已经有一个名为
wf
的数据集,则不需要整个过程。您只需正确调整
wf
,然后运行
foverlaps
。换句话说,忘记
WG
并执行以下操作

  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

我已经添加了
setDT(wd)[,`:=`(start=Date-1800L,end=Date+1800L)]
back,我以为你已经做了那行了。直到(包括)wf=data.frame(wg,w)之前的所有内容都与您的帖子中的内容相同,因此我没有再次发布。哪一列有NAs
wg
w
不重要,因为它没有在上加入。如果您有真正的
NA
wf,请尝试使用
wf从
wf
中删除
NA
s,
wf尝试
unique(res[,valu1:=mean(valu1),by=WGDate],by=“WGDate”)
  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
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