You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用ts()函数创建时间序列时如何排除指定时间段?

在base R中从ts对象中排除指定年份范围的元素

当然可以直接排除2015年至2046年的所有元素,不用把它们设为NA。给你两种base R原生的实现方法:

方法一:用window()拆分后合并

window()是处理时间序列的专用函数,可以精准提取指定时间区间的片段,我们可以把需要保留的前后两段分开提取再合并:

# 提取1950年1月到2014年12月的部分
part1 <- window(dat, start = c(1950, 1), end = c(2014, 12))
# 提取2047年1月到2100年12月的部分
part2 <- window(dat, start = c(2047, 1), end = c(2100, 12))
# 合并两段得到筛选后的时间序列
dat_filtered <- c(part1, part2)

方法二:通过时间索引直接筛选

利用time()函数获取每个观测对应的时间值,再用逻辑条件筛选出不需要排除的部分:

# 获取时间序列中每个观测的时间(格式为带小数的年份,比如2015年1月是2015.0)
times <- time(dat)
# 筛选出不在2015-2046范围内的观测
dat_filtered <- dat[times < 2015 | times >= 2047]

两种方法得到的dat_filtered都是保留了原时间序列属性的ts对象,完全移除了2015到2046年的所有元素,符合你的需求。

内容的提问来源于stack exchange,提问作者Beardedant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:30:59