R语言 为什么在对象中看不到月数

x33g5p2x  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(156)

我有一个ts()对象:

ts(Df, start = c(2010, 7), end = c(2022, 11),frequency = 12)

但当我尝试查看时间窗口时,它显示如下:

time(Df_ts)

2010.500 2010.583 2010.667 2010.750 2010.833
我期待它是:
2010.7 2010.8 2010.9

nwo49xxi

nwo49xxi1#

不,它以.0开头,而不是.1.。是一年的十二分之一。一月有0/12,二月有1/12,等等。

1/12
# [1] 0.08333333

ts(1:10, start = c(2010, 1), end=c(2011, 1), frequency=12) |> time()
#           Jan      Feb      Mar      Apr      May      Jun
# 2010 2010.000 2010.083 2010.167 2010.250 2010.333 2010.417
# 2011 2011.000                                             
#           Jul      Aug      Sep      Oct      Nov      Dec
# 2010 2010.500 2010.583 2010.667 2010.750 2010.833 2010.917
# 2011

这是同样的逻辑:

seq.int(2010, 2011, length.out=13)
#  [1] 2010.000 2010.083 2010.167 2010.250 2010.333 2010.417
#  [7] 2010.500 2010.583 2010.667 2010.750 2010.833 2010.917
# [13] 2011.000
k3fezbri

k3fezbri2#

原因是ts对象的frequency设置为12。这意味着ts对象中的时间戳以1 month的间隔均匀分布。例如,2010年1月1日的时间戳是2010.000,2010年2月1日的时间戳是2010.083。如果你想在ts对象中看到月数,你可以使用as.yearmon()函数。下面将ts对象转换为yearmon对象:

library(zoo)
Df_ts_yearmon <- as.yearmon(Df.ts)

然后使用time()函数查看时间戳:

time(Df_ts_yearmon[1:6])

相关问题