【问题标题】:providing date in x-axis in R在 R 中的 x 轴上提供日期
【发布时间】:2013-03-15 19:03:50
【问题描述】:

谁能告诉我如何在 R 的时间序列中给出开始和结束的日期。我知道如何给出一个序列,比如:

ts <- ts(temp, start=1, end=10)

但我想从 1 月 1 日开始到 1 月 10 日结束,而不是 1 到 10 日。提前致谢。

【问题讨论】:

  • 以下行将生成日期序列:seq(as.Date("1910/1/1"), as.Date("1910/1/10"), "days")也许这会有所帮助。我不确定。也许包括一个可重现的例子来展示你想要什么。
  • 也许这个问题也会有所帮助:stackoverflow.com/questions/4843969/…
  • @Mark,我尝试了 seq,但它在 ts 命令中不起作用。
  • 如果没有一个可重复的小例子,很难提供很多建议。也许您可以使用朱利安日期,然后将它们转换为日历日期以进行绘图。 rss.acs.unt.edu/Rdoc/library/CTFS/html/tojulian.html

标签: r


【解决方案1】:

ts 中的基本时间序列功能可能不足以满足您的需求。有很多 available tools 用于在 R 中处理时间序列,但 ts 类用于表示

“规则间隔的时间序列(使用数字时间戳)。因此,它是 特别适合年度、月度、季度数据等"

如果你正确地描述了你的数据,print 命令会很好地格式化它。如果您希望将数据分成几个月,您可以这样做(注意 frequency of 12):

> print(ts(round(rnorm(44)), start = c(2012,3), frequency = 12), calendar = TRUE)
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012           2   1  -2  -1   1   1   0  -1   1  -1
2013   1   0   2   1  -1   1  -1  -1   0   2   1   2
2014   2   0  -1   0   1   1   0   0   2  -1   0   0
2015   2   0   0  -1   0   0   0   1   2   0        

由于您需要每日间隔,因此您需要将 frequency 设置为 365:

> print(ts(letters, start = c(2013, 1), frequency = 365), calendar = TRUE)
     p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21
2013  a  b  c  d  e  f  g  h  i   j   k   l   m   n   o   p   q   r   s   t   u
     p22 p23 p24 p25 p26
2013   v   w   x   y   z

这看起来会很尴尬,但会解决您的问题,因为它不仅会为您提供每天的数字。但是,如文档中所述,ts 类仅支持“数字时间戳”,因此这可能是您使用内置 ts 功能获得的最佳效果。

如果您想要更高级的功能,我会查看this documentation 中的一些工具。

【讨论】:

  • 实际上我知道如何使用 c(2013, 1) 这基本上意味着从 1 月 1 日开始。但是还有其他方法可以包括那里的那一天吗?它甚至不像:start = 1910/1/1, end= 1910/1/10??
  • @ToNoY 不是,不是。你为什么要它那样工作?使用ts 的目的不是为了显示数据,而是为了一些更抽象的计算强制间隔的规律性。如果您只想要日期,只需使用日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多