【问题标题】:How to get years from a time series index when the underlying time series is of monthly freq?当基础时间序列为每月频率时,如何从时间序列索引中获取年份?
【发布时间】:2023-03-21 20:22:01
【问题描述】:

我想从时间序列索引中提取年份(基础时间序列是每月频率)。我想这样做的原因是创建一个年轴,例如

plot(myts)
axis(1, at = year(time(myts)), labels = FALSE)
# note I know 'year()' does not work :)

因为如果我只是绘制它,R 会任意(?)创建一个时间轴。通常它是一个两年甚至五年的轴,这有时是不合适的。

tsp(myts) 
[1] 1966.000 1974.917   12.000

【问题讨论】:

  • 你能告诉我们更多关于你的时间序列的信息吗:也许只显示tsp(myts)的输出?

标签: r plot time-series


【解决方案1】:

我找到了自己的解决方案。也许这对其他人也有帮助。另外我觉得还不算太聪明……所以期待你的建议。

 axis(1, at = start(time(myts))[1]:end(time(myts))[1], labels = TRUE)

编辑:找到更优雅的解决方案:

require(zoo)
x <- as.yearqtr("1991 Q1")
format.Date(x,"%Y")

根据@matty T pain,它也适用于ts(参见 cmets)。

【讨论】:

  • 你有没有发现比这更好的东西?我投了赞成票,因为我根本找不到任何东西。 R 中的一些复杂的东西非常简单,但是像这样的一些简单的东西却超级冗长而且很难做到。
  • 哇,那是我不久前的事,但你的评论让我又看了一遍。看起来我刚刚找到了一种更好的方法来提取年份:x &lt;- as.yearqtr("1991 Q1") 然后使用format.Date(x,"%Y")。这是你要找的吗?
  • 啊,我知道as.yearqtrzoo,但我猜它也应该适用于ts
  • 是的,刚刚在 ts 上尝试过,它完全符合我的要求。谢谢!
【解决方案2】:

我不熟悉你的数据,但是如果是时间序列类(ts),那么你可以使用window函数:

window(myts,start="*beginyear*",end="*endyear*")

如果你不能这样做,也许你可以在这里使用一些建议:

http://r.789695.n4.nabble.com/Year-and-Month-extraction-from-Date-object-td904011.html

马特

【讨论】:

  • window 返回的是数据,而不是索引。
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 2018-06-23
  • 2014-08-17
  • 2020-10-09
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
相关资源
最近更新 更多