簡體   English   中英

為什么我在R中的每月時間序列數據中獲得1的頻率?

[英]Why am I getting a frequency of 1 for this monthly time series data in R?

我正在使用R進行時間序列分析,並且我將以下csv文件加載到R

CSV file:

CSV

我使用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)

問題中顯示的代碼是創建一個多變量時間序列,由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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM