在过去的两个小时中,这个问题一直困扰着我。我需要将两个具有共同名称变量但年份变量不同的数据框合并在一起。我需要基于df1的年份在df2的两个日期之间有条件地合并。
数据如下:
Name Year X
Rob 1990 Red
Bob 1991 Blue
Alice 1992 Yellow
Alice 1994 Blue
和
Name startDate endDate Y
Rob 1989 1994 xxx
Bob 1982 1993 yyy
Alice 1983 1990 xxx
Alice 1990 1995 hhhh
Alice 2000 2001 gggg
我有兴趣像这样将Y变量从df2转换为df1:
Name Year X Y
Rob 1990 Red xxx
Bob 1991 Blue yyy
Alice 1992 Yellow hhhh
Alice 1994 Blue hhhh
当然,发言者的合并不适合该数据,并且我尝试使用if语句创建for循环的尝试也没有成功。
如果有人可以提供帮助,我将非常感激。
您是否正在寻找类似的东西?
library(tidyverse)
df1 %>%
left_join(df2) %>%
filter(Year >= startDate, Year <= endDate) %>%
select(-c(startDate, endDate))
输出
Name Year X Y
1 Rob 1990 Red xxx
2 Bob 1991 Blue yyy
3 Alice 1992 Yellow hhhh
4 Alice 1994 Blue hhhh