基于ID的附加列和两个日期之间的R

问题描述 投票:0回答:1

在过去的两个小时中,这个问题一直困扰着我。我需要将两个具有共同名称变量但年份变量不同的数据框合并在一起。我需要基于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循环的尝试也没有成功。

如果有人可以提供帮助,我将非常感激。

r merge between
1个回答
0
投票

您是否正在寻找类似的东西?

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
© www.soinside.com 2019 - 2024. All rights reserved.