【发布时间】:2019-12-06 19:09:27
【问题描述】:
我有两个表,一个示例表和一个消息表。在消息表中,消息记录在跟踪器的采样率之外。我一直在做的是使用 data.table roll 最近将示例消息时间与示例报告中最接近的值相匹配。与其将示例消息返回到最近的时间并为其他所有内容返回 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
【问题讨论】:
标签: r data.table