R 具有多个条件的左联接

R 具有多个条件的左联接,r,merge,R,Merge,我有两个数据,我想用两个条件做一个左连接 标准1:同一标题 标准2:开始日期和结束日期之间的日期 数据B Title Date A 2018-07-01 B 2019-12-30 数据A Title StartDate EndDate Score A 2018-01-01 2018-05-18 0 A 2018-05-19 2019-01-01 1 B 2019-10-01 2020-02-01 4 B 2020

我有两个数据,我想用两个条件做一个左连接

标准1:同一标题

标准2:开始日期和结束日期之间的日期

数据B

Title  Date
A      2018-07-01
B      2019-12-30
数据A

Title StartDate  EndDate     Score
A     2018-01-01 2018-05-18    0
A     2018-05-19 2019-01-01    1
B     2019-10-01 2020-02-01    4
B     2020-02-02 2020-10-01    7
这就是我想要的

Title  Score
A       1
B       4

提前谢谢

我们可以对
数据使用非等联接。表

library(data.table)
setDT(DataA)[DataB,  .(Title, Score), on = 
      .(Title, StartDate < Date, EndDate >= Date)]
#   Title Score
#1:     A     1
#2:     B     4
库(data.table)
setDT(DataA)[DATB,(标题,分数),on=
(标题,开始日期<日期,结束日期>=日期)]
#标题得分
#1:A 1
#2:B 4
数据
DataA谢谢!再编辑一次。如果我想在我的新数据集中保留数据,我应该如何编辑?@sequenenretao你可以做
setDT(DataA)[DataB,((Title,Score,Date=StartDate),on=(Title,StartDate=Date)]
我对这个解决方案有一些问题。在公式中,您使用了“StartDate=Date”。当“Date”=“StartDate”我得到了NA。另一方面,我们不能使用“StartDate=Date”来避免重复。如何解决这个问题?@sequennretao如果相等,只需使用
Date=StartDate
您可以根据条件使用
StartDate=Date
DataA <- structure(list(Title = c("A", "A", "B", "B"), 
StartDate = structure(c(17532, 
17670, 18170, 18294), class = "Date"), EndDate = structure(c(17669, 
17897, 18293, 18536), class = "Date"), Score = c(0L, 1L, 4L, 
7L)), row.names = c(NA, -4L), class = "data.frame")

DataB <- structure(list(Title = c("A", "B"), Date = structure(c(17713, 
18260), class = "Date")), row.names = c(NA, -2L), class = "data.frame")