我想做一种vlookup。正如您所知,Excel vlookup 函数从数据中获取第一个值。另一方面,left_join 函数的工作原理类似。但是,当第一个数据在查找值上不唯一时,left_join 函数会重复 de 值。我想对 Excel 进行同样的思考,而不使第一个数据集变得唯一。我不想操纵任何数据。只是想获得第一眼的价值。
例如。在本例中,我们看到标题 A 在 Data3 中重复,并且 StartYear 看起来与 EvaYear 相同:(
我想在 StartDate 和 EndDate 之间找到 EvaYear。如果 EvaYear 等于 EndDate 和下一周期的 StartDate。我想坐第一排。这就是为什么我必须在公式中同时使用 >= 和
Title <- c("A","A","A","B","B")
StartYear <- c(2000,2005,2008,2010,2012)
EndYear <- c(2005,2008,2010,2012,2015)
Score <- c(100,75,80,95,79)
Data1 <- data.frame(Title,StartYear,EndYear,Score)
Title <- c("A","B")
EvaYear <- c(2008,2015)
Data2 <- data.frame(Title,EvaYear)
setDT(Data2)
Data3 <- setDT(Data1)[Data2,.(Title,StartYear,EndYear,EvaYear,Score),on=.(Title,StartYear<=EvaYear,EndYear>=EvaYear)]
运行查询后我得到:
Title StartYear EndYear EvaYear Score
A 2008 2008 2008 75
A 2008 2008 2008 80
B 2015 2015 2015 79
但我需要得到:
Title StartYear EndYear EvaYear Score
A 2005 2008 2008 75
B 2012 2015 2015 79