我有两个要合并的数据帧,如下所示:
df1 <- data.table(
color = c("Green", "Green", "Red","Red"),
year = c(1995, 2001,2010,1997)
)
df2 <- data.table(
color = c("Green", "Green", "Red", "Blue"),
value = 1:4,
year = c(1996, 2002, 2001, 2003)
)
我想合并这些,以便保留df1中的所有观测值,但它们只与 colored颜色 组中具有最接近年值的df2中的观测值配对.I would ideally like to use 100 for this.
我试过这个:
df1 %>%
inner_join(df2, by = 'color', suffix = c('.1', '.2')) %>%
group_by(color) #%>%
filter(abs(year.1 - year.2) == min(abs(year.1 - year.2)))
但是,这只给我留下了每种" colored颜色 "的一个观察结果,而不是df 1中的所有观察结果.如何合并以保持df 1中的所有观测值,并且仅按 colored颜色 和最接近的年份值合并?此外,是否有可能将其指定为之前/之后/之一的最近年份?
结果应该如下所示:
df3 <- data.table(
color = c("Green", "Green", "Red","Red"),
year = c(1995, 2001,2010,1997),
value = c(1,2,3,3)
)