首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xts子集季度数据

xts子集季度数据
EN

Stack Overflow用户
提问于 2014-06-18 18:33:51
回答 1查看 1.5K关注 0票数 2

我想对一个xts对象中包含的季度数据进行子集。

我看到文档上写着:"xts提供了基于当前任何基于时间的类的索引功能,其中包括年度xts“。

但是,我已经尝试了以下方法,它们确实产生了一系列的数据,但不是我所要求的日期。

代码语言:javascript
复制
a = as.xts(ts(rnorm(20), start=c(1980,1), freq=4))
a["1983"] # Returns 1983Q2 - 1984Q1 ?
a["1983-01/"] # Begins in 1983Q2 ?
a["1981-01/1983-03"] # Returns 1981Q2 - 1983Q2 ?

a[as.yearqtr("1981 Q2")] # Correct
a[as.yearqtr("1981 Q1")/as.yearqtr("1983 Q3")] # Does not work
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-18 20:33:52

好像是时区问题。xts索引始终是一个POSIXct对象,即使索引类是其他类。与Date类索引一样,yearqtr (和yearmon)类索引应该将时区设置为"UTC"

代码语言:javascript
复制
> a <- as.xts(ts(rnorm(20), start=c(1980,1), freq=4), tzone="UTC")
> a["1983"]
              [,1]
1983 Q1  1.4877302
1983 Q2 -0.4594768
1983 Q3 -0.1906189
1983 Q4 -1.1518943
Warning message:
timezone of object (UTC) is different than current timezone (). 

你可以安全地忽略这个警告。如果这真的困扰您,您可以通过以下方式将R会话的时区设置为"UTC"

代码语言:javascript
复制
> Sys.setenv(TZ="UTC")
> a <- as.xts(ts(rnorm(20), start=c(1980,1), freq=4))
> a["1983"]
               [,1]
1983 Q2  1.84636890
1983 Q3 -0.06872544
1983 Q4 -2.29822631
1984 Q1 -1.46025131

这是行不通的:

代码语言:javascript
复制
a[as.yearqtr("1981 Q1")/as.yearqtr("1983 Q3")] # Does not work

看起来你想做的事情是:a["1981 Q1/1983 Q3"],因为"YYYY“不是ISO8601格式,所以它不受支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24293822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档