r - 按特定列值过滤日期
问题描述
我正在尝试从日历日数据框中过滤具有特定 offsetdate 值的日期。
数据框日历日:
calendardays <- as.data.frame(as.Date(seq(as.Date("2019-01-03"), as.Date("2022-12-31"), by="days")))
colnames(calendardays)<- c("Date")
DF2:
LC Custcode Date offsetdate
RM11 IN007543 2019-10-03 2
WK15 IN007543 2019-10-03 3
在 DF2 中,对于每一行都有一个 offsetdate,这意味着我想找到 x 号。DF2 中提到的日期的日期,对应于 Dataframe calendardays 中的 LC CustCode。
输出:
LC Custcode Date
RM11 IN007543 2019-10-03
RM11 IN007543 2019-10-04
WK15 IN007543 2019-10-03
WK15 IN007543 2019-10-04
WK15 IN007543 2019-10-05
解决方案
使用 ix 展开 DF2,然后增加 Date 字段。不使用任何包。
ix <- rep(1:nrow(DF2), DF2$offsetdate) # 1,1,2,2,2
DF2rep <- transform(DF2[ix, ], Date = Date + sequence(DF2$offsetdate) - 1)[-4]
这已经给出了问题中显示的输出,但是如果您需要检查日期是否也出现在 calendardays 中,这只会在 DF2rep 中保留也在 calendardays 中的日期。
DF2rep[DF2rep$Date %in% calendardays$Date, ]
笔记
假设可重现形式的 DF2 为:
Lines <- " LC Custcode Date offsetdate
RM11 IN007543 2019-10-03 2
WK15 IN007543 2019-10-03 3"
DF2 <- read.table(text = Lines, header = TRUE)
DF2$Date <- as.Date(DF2$Date)
推荐阅读
- arrays - 打字稿泛型,获取数组内容的类型
- json - 从 json 文件访问 python 嵌套字典的最佳方法,在特定级别只有 1 个变量键
- ios - 未处理的承诺拒绝:ImageSource.setNativeSource() 需要 UIImage 实例
- r - 在 dbplyr 后端应用排名窗口函数
- css - Angular 7 - 材质组件 CSS 未加载
- c# - EF LINQ 使用多个值跨多个字段进行搜索,但它们都必须至少出现一次
- excel - VBA 执行一分钟,然后看似无缘无故地循环回到 with 语句
- python - Scrapy,爬取多页的动态页面
- spring-webflux - 如何使用带有 zip 可迭代的组合器
- haxe - 带有 Windows (cpp) 目标的 Haxe 列表文件返回空字符串?