【发布时间】:2018-01-31 22:06:29
【问题描述】:
我想知道是否可以使用 dplyr 或一些 tidyverse 包来实现以下...
上下文:我无法将我的数据放入允许使用geom_rect 的结构中。有关动机,请参阅this SO question。
library(tis)
# Prepare NBER recession start end dates.
recessions <- data.frame(start = as.Date(as.character(nberDates()[,"Start"]),"%Y%m%d"),
end= as.Date(as.character(nberDates()[,"End"]),"%Y%m%d"))
dt <- tibble(date=c(as.Date('1983-01-01'),as.Date('1990-10-15'), as.Date('1993-01-01')))
期望的输出:
date start end
1983-01-01 NA NA
1990-10-15 1990-08-01 1991-03-31
1993-01-01 NA NA
感谢任何建议。
注意:之前的问题表明sqldf 是一种可以采用的方法。但是,这里的数据涉及到日期,我理解的日期不是 SQLite 中的数据类型。
本着“编写您希望拥有的代码”的精神:
df <- dt %>%
left_join(x=., y=recessions, date >= start & date <= end)
【问题讨论】:
-
This response 包含对日期时间范围的一些类似要求,并受
sqldf支持。 -
包 fuzzyjoin 也可能有一些用处。