R语言中为日期向量每个元素插入对应前一天日期的问题求解
现有代码问题分析
- 变量名拼写错误:你最初的测试代码中写的
c(date, dates_lagged),变量名应为dates而非date,若实际运行用了这段代码,会因变量不存在报错或取值异常。 - 拼接逻辑错误:直接用
c()拼接两个完整向量,会把所有原始日期放在前面、所有前一天日期放在后面,完全不符合「每个原始日期前紧跟对应前一天日期」的交错排列需求。 read_csv用法错误:read_csv的file参数用于指定要读取的本地文件路径,你直接传入日期向量属于用法错误,会导致数据读取异常,最终得到的FOMC向量本身就缺失部分原始日期,这是你遇到「1990-10-29对应前一天没生成」问题的核心原因。
正确实现方法
步骤1:正确构造原始日期向量
不要用read_csv来直接构造向量,直接通过c()传入日期值即可:
original_dates <- as.Date(c("1990-02-08", "1990-03-28", "1990-05-16", "1990-07-05", "1990-07-13", "1990-08-22", "1990-10-03", "1990-10-29", "1990-11-14", "1990-12-07", "1990-12-18", "1991-01-08", "1991-02-01", "1991-02-07"))
步骤2:交错拼接前一天日期和原始日期
用基础R的rbind方法就能快速实现交错排列,无需额外安装包:
# 生成所有日期对应的前一天 prev_dates <- original_dates - 1 # 按「前一天、原始日期」的顺序交错拼接 combined_dates <- as.vector(rbind(prev_dates, original_dates))
效果验证
输出前6个值即可验证符合需求:
head(combined_dates)
输出结果:
[1] "1990-02-07" "1990-02-08" "1990-03-27" "1990-03-28" "1990-05-15" "1990-05-16"
如果后续需要按时间顺序全局排序,额外加一行combined_dates <- sort(combined_dates)即可。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

