在引用时间序列时,我可以引用日期而不是元素索引号吗?

2次浏览(过去30天)
我想从我的时间序列中引用一些子样本,它们是季度经济数据。我有许多开始和结束日期不同的系列,但我想在对它们执行一些操作之前,在相同的日期将它们全部分割成子样本。
例如:
系列X1由1975年3月31日延伸至2017年12月31日
系列X2从1983年6月30日延伸至2009年12月31日
我想把它们在31.12.2000分成:
X1old从1975年3月31日至2000年12月31日,X1new从2001年3月31日至2017年12月31日
X2old由1983年6月30日至2000年12月31日;X2new由2001年3月31日至2009年12月31日
这可以通过引用日期而不是时间序列向量本身的元素索引号来实现吗?

接受的答案

吉隆坡
吉隆坡 2018年6月19日
使用日期提取所需的索引。请看下面的例子,
创建一些虚拟数据
T = datetime([2018 1 1 1 1 1]):days(30):datetime([2018 6 1 1 1 1]);
X = table(t。”,兰德(元素个数(t) 1))
%找到在2018年3月31日之前的元素指数
indx = X{:,1}<=datetime([2018 3 31 23 0 0]);
%对应元素
X (indx:)
%其他元素
X (~ indx,:)

更多答案(1)

史蒂文的主
史蒂文的主 2018年6月26日
如果你使用 时间表 来存储您的数据,而不是 表格 ,你可以利用 timerange
%创建时间表
Times = datetime([2018 1 1 1 1 1]):days(30):datetime([2018 6 1 1 1 1]);
Data = randi([-10 10], number (times),1);
Tt =时间表(时间。”,数据)
starttofrange = datetime([2018 3 31 23 0 0]);
%选项1
tt (tt。时间< startOfRange,:)
选项2,适用于有限区间
interval2 = timerange(starttofrange, starttofrange + days(60))
tt (interval2:)
选项3,无限间隔
interval3 = timerrange (start tofrange, Inf)
tt (interval3:)
使用一个 时间表 也给了你访问 调整时间 而且 同步 .这些函数和 groupsummary (这是R2018a版本中的新功能,可以在两者上使用 表格 而且 时间表 数组)可以帮助你分析财务数据。中每个月的数据之和 时间表 上面创建的Tt:
Tt2 = retime(tt,“月”“和”
3评论
史蒂文的主
史蒂文的主 2018年6月26日
时间表 调整时间 , 同步 均在R2016b版本中引入。在我列出的功能中,只有 groupsummary 是后来介绍的。

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!