r语言 - 将数据与 data.table roll= 合并 "nearest" 在整个 DF 中滚动匹配



>我有两个表,一个示例表和一个消息表。在消息表中,消息记录在跟踪器的采样率之外。我一直在做的是使用 data.table 滚动最近将示例消息时间与示例报告中最近的值相匹配。它似乎不是将示例消息返回到最近的时间,而是将其他所有消息的 NA 返回到最近的时间。


library(data.table)
remotes::install.github("dmirman/gazer") # to get the data
library((gazer)

samp <- system.file("extdata", "TJ_samp.xls", package = "gazer")
samp <- data.table::fread(samp, stringsAsFactors = FALSE) # reads in large datasets 
msg <- system.file("extdata", "TJ_msg.xls", package = "gazer")
msg <- data.table::fread(msg, stringsAsFactors = FALSE) # reads in large datasets 
setDT(samp)
setDT(msg)
DT_mesg <- msg[samp, on="time", roll="nearest"] # use this to get close to values in sample report
DT_mesg
#SR edfs are a nightmare. This makes it so messages are alined with closest values 
get_msg <- DT_mesg %>% 
group_by(trial, message) %>% 
top_n(n=1, wt=desc(time)) # there are a lot of useless messages and they occupy the same time stamp. Only take the first message in time. This was one way I tried to deal with the multiple message issue, but it does not return messages close to their actual time. 
get_msg

我能够弄清楚...

setDT(samp)
setDT(msg)
DT_mesg <- msg[samp, on="time", roll=4]

这给了我想要的结果:


trial    time                     message i.trial     x     y  pup Label
1:     1 3314705 !MODE RECORD CR 250 2 1 Ln       1 958.8 580.8 4043  <NA>
2:    NA 3314709                        <NA>       1 959.1 576.2 4052  <NA>
3:    NA 3314713                        <NA>       1 959.8 575.6 4053  <NA>
4:    NA 3314717                        <NA>       1 960.6 575.2 4056  <NA>
5:    NA 3314721                        <NA>       1 960.2 579.6 4049  <NA>

不知道为什么 roll="nearest" 返回以下内容:

trial    time                     message i.trial     x     y  pup Label
1:     1 3314705 !MODE RECORD CR 250 2 1 Ln       1 958.8 580.8 4043  <NA>
2:     1 3314709 !MODE RECORD CR 250 2 1 Ln       1 959.1 576.2 4052  <NA>
3:     1 3314713 !MODE RECORD CR 250 2 1 Ln       1 959.8 575.6 4053  <NA>
4:     1 3314717 !MODE RECORD CR 250 2 1 Ln       1 960.6 575.2 4056  <NA>
5:     1 3314721 !MODE RECORD CR 250 2 1 Ln       1 960.2 579.6 4049  <NA>

最新更新