R合并关闭值

cnh2zyt3  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(116)

我的问题与此类似,但我的问题更简单,所以我希望有更简单的解决方案。How to merge two datasets based on similar but not exact time variable written in string. using R?
我的 Dataframe 看起来像这样:

a <- data.frame(ID = 1:4,
                EG = c("CA", "EV", "EV", "TR"),
                year =c(2000, 2005, 2010, 2020), test = sample(4))

b <- data.frame(ID = 1:4,
                EG = c("CA", "EV", "EV", "TR"),
                test = sample(20),
                year = sample(2000:2019, 20, replace=TRUE))

现在我想执行一个左连接,比如merge(b, a, by=c("ID", "EG", "year"), all.x=TRUE)。但是我想:如果a中的年份在B中找不到,则a的值应与b匹配,其中年份B已关闭d(在冲突舍入中)。这意味着在结束时, Dataframe 中的所有“ID”、“EG”、“年份”列应具有来自关闭d的年份B的测试值。

yizd12fk

yizd12fk1#

dplyr的开发版本中,我们可以将join_byclosest一起使用

library(dplyr)
left_join(b, a, by = join_by(ID, EG, closest(year <= year)))

相关问题