在R语言中将指定日期替换为另一日期向量中的最近日期的方法
解决方法
要把date替换成date2中最近的日期(也就是比原date大的最小日期),可以用以下几种简洁的实现方式:
方法一:筛选后取最小值
直接筛选出date2中大于等于原date的日期,再取其中的最小值:
date <- min(date2[date2 >= date])
如果需要考虑date2中没有比原date晚的日期的情况,可以加个判断逻辑:
candidates <- date2[date2 >= date] if (length(candidates) > 0) { date <- min(candidates) } else { warning("date2中没有比原date晚的日期") }
方法二:用findInterval定位位置
利用findInterval找到原date在date2中的位置,再取下一个元素:
idx <- findInterval(date, date2) + 1 if (idx <= length(date2)) { date <- date2[idx] } else { warning("date2中没有比原date晚的日期") }
针对你的示例数据,两种方法都会把date从2020-12-05替换为2020-12-07,完全符合需求。
内容的提问来源于stack exchange,提问作者Westwinter1
相关产品推荐
相关产品推荐

