R语言中如何检测时间序列数据中的缺失年份?
R 实现连续年份序列缺失值识别
现有存储年份信息的列取值为:
2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022
需要识别该时间序列区间内存在的缺失年份,本示例预期输出缺失的2016年。
可直接运行的Base R代码
不需要安装任何第三方包,原生R环境即可执行:
# 读入现有年份数据,若数据存放在数据框中,替换为对应列即可,例如 df$year year_col <- c(2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022) # 生成从最小年份到最大年份的连续完整年份序列 full_seq <- seq(from = min(year_col, na.rm = TRUE), to = max(year_col, na.rm = TRUE), by = 1) # 取差集得到缺失年份 missing_year <- setdiff(full_seq, year_col)
结果验证
执行代码后查看missing_year变量,返回结果为2016,和预期一致。
注意事项
- 代码中加入了
na.rm = TRUE参数,若原始年份列存在空值会自动忽略,不影响范围计算 - 该方法同样适用于识别月份、连续序号等步长为1的整数序列缺失值
- 如果时间序列步长不是1(例如每2年统计一次),只需要修改
seq()函数里的by参数为对应步长即可
内容的提问来源于stack exchange,提问作者user18937485
相关产品推荐
相关产品推荐

