R 合并关闭值

R merge close value

提问人:Sulz 提问时间:1/27/2023 最后编辑:Sulz 更新时间:2/22/2023 访问量:47

问:

我的问题与此类似,但我的问题在某种程度上更容易,所以我希望有更简单的解决方案。如何根据字符串中编写的相似但不精确的时间变量合并两个数据集。 使用 R?

我的数据帧如下所示:

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))

现在我想像 .但是我想要:如果在 b 中找不到 a 中的年份,则 a 的值应与 b 匹配,其中 B 年关闭 sd(冲突四舍五入)。这意味着在数据帧末尾,所有“ID”、“EG”、“year”列都应具有来自关闭年份 B 的测试值。merge(b, a, by=c("ID", "EG", "year"), all.x=TRUE)

R 合并

评论


答:

0赞 akrun 1/27/2023 #1

在版本中,我们可以使用dplyr>= 1.1.0join_byclosest

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

评论

0赞 Sulz 1/27/2023
对我来说,它给出了一个错误:即使我有 dplyr,也找不到函数“join_by”。dplyr:: join by 表示“join_by”不是从“namespace:dplyr”导出的对象。我可以用以下方法替换它吗: c() ?
0赞 akrun 1/27/2023
我提到了版本devel
0赞 Sulz 1/27/2023
不好意思。我不认识。我再试一次。首先需要加载开发版本。