我使用R进行时间序列分析,我有下面的csv文件,我已经加载到R中
CSV file:

我使用zoo包将数据帧转换为ts对象:
library(zoo)
df1_ts <- as.ts(read.zoo(df1, FUN = as.yearmon))跑步:
class(df1_ts)
# [1] "mts" "ts" "matrix"`但是,当我运行head(df1_ts)时,会得到以下结果:
head(df1_ts)
# Time Series:
# Start = 2014
# End = 2018
# Frequency = 1
# Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 2014 4621 3569 4249 4593 3320 1970 2483 3474 4302 5670 5788 5570
# 2015 5747 4346 5176 5362 5360 3707 3883 5138 5568 6034 5989 5648
# 2016 5821 5164 5781 5346 5339 4743 5417 5514 5880 5899 6014 5641
# 2017 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5864 5567
# 2018 5655 5392 5766 5268 5680 5337 5197 5714 5802 5935 5955 5637为什么我要得到Frequency=1?我预计Frequency是12岁,因为这是每月的数据?
我怎么才能解决这个问题?
我尝试了以下几点,但没有成功:
df1_ts <- as.ts(read.zoo(df1, FUN = as.yearmon), freq=12)发布于 2019-05-12 13:39:06
问题中所示的代码是创建一个由12个序列组成的多变量时间序列(每个月列一个序列),其时间指数为年份;然而,需要的是一个单变量月序列。
使用最后的注中所示的df1,首先用转置将data.frame df1转换成一个矩阵,然后用c逐列将这个转置矩阵分解成一个向量。现在我们可以直接定义ts系列了:
tt <- ts(c(t(df1[-1])), start = df1$Year[1], freq = 12)给予:
frequency(tt)
## [1] 12
tt
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2014 1 2 3 4 5 6 7 8 9 10 11 12
## 2015 13 14 15 16 17 18 19 20 21 22 23 24
## 2016 25 26 27 28 29 30 31 32 33 34 35 36
## 2017 37 38 39 40 41 42 43 44 45 46 47 48
## 2018 49 50 51 52 53 54 55 56 57 58 59 60备注
请不要使用图片显示您的输入数据,因为这意味着,任何人想要回答它将需要重新键入它。提供可再现的R代码。这一次我为你们做了这件事,改变了数据以避免输入所有这些数字。
df1 <- as.data.frame(cbind(2014:2018, matrix(1:60, ncol = 12, byrow = TRUE)))
names(df1) <- c("Year", month.abb)https://stackoverflow.com/questions/56098773
复制相似问题