提问人:CLARA 提问时间:7/13/2023 最后编辑:r2evansCLARA 更新时间:7/13/2023 访问量:25
根据几个变量进行匹配,有些是完全匹配的,有些是一系列变化的
Match according to several variables, some exactly and some with a range of variation
问:
match1 <- semi_join(datosvendor, datosclient,
by=c("DAY","HOUR","MINUTE","ANUM","BNUM","DURATION"))
我想根据上一行代码中出现的变量(日、小时、分钟、数字 A、数字 B 和持续时间)以精确的方式在两个数据帧的调用之间进行匹配。但我还想添加另一个变量来进行匹配,但不是以精确的方式:我还想添加调用的秒数(“SECOND”),但考虑到我想不以精确的秒数进行匹配,而是以 3 秒的范围内进行匹配上下。也就是说,我希望数据帧的调用与另一个数据框的调用相匹配,同时考虑到它们最多可以上下变化三秒(但它们必须在所有其他列中完全匹配)。
注意:我的两个数据框没有相同的维度。
添加这个新变量以使其与所有其他变量进行匹配的语法如何?
答: 暂无答案
评论
data.table
sqldf
fuzzyjoin
dplyr 1.1.0+
semi_join(datosvendor, datosclient |> mutate(DATETIME_low = DATETIME - 3, DATETIME_high = DATETIME + 3), join_by(BNUM, DURATION, DATETIME >= DATETIME_low, DATETIME <= DATETIME_high))
datosvendor <- datosvendor |> mutate(DATETIME = lubridate::ymd_hms(paste(YEAR, DAY, HOUR, MINUTE, SECOND))