[英]converting data frame to time series in R unemployment
我從勞動統計局下載了1980年至2017年的失業數據。 我將文件上傳到R,並嘗試使用as.ts(unemployment)將其轉換為時間序列,但沒有得到合適的圖形。 我有13列,第一列代表年份,值是1980-2017年,其他12列代表月份和失業率。 例如:
資產(失業)
時間序列:
開始= 1
終點= 38
頻率= 1
年1月2月3月4月5月6月7月8月9月10月
1 1980 6.3 6.3 6.3 6.9 7.5 7.6 7.8 7.7 7.5 7.5
2 1981年7.5 7.4 7.4 7.2 7.5 7.5 7.2 7.4 7.6 7.9
3 1982 8.6 8.9 9.0 9.3 9.4 9.6 9.8 9.8 10.1 10.4
11月和12月由於空間原因而被壓制
請注意,數據框中的列代表具有不同含義的不同事物(混合變量和觀察值)。 例如,第一列是year
,而其他列是months
。 因此,您必須首先tidy
數據框。 使用上面的示例數據:
library(tidyr)
library(dplyr)
df_ts <- df %>%
gather(key=Month, value=Value, -Year) %>%
mutate(Month=factor(Month, levels = c("Jan", "Feb", "Mar",
"Apr", "May", "Jun",
"Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"))) %>%
arrange(Year, Month) %>%
pull(Value) %>%
as.ts(start=c(1980,1), end=c(2017,12), frequency=12)
您可以使用tidyr::gather()
進行tidyverse
方式,也可以將數據tidyverse
強制轉換為矩陣,然后再將其轉換為ts
對象。
我將讓其他人詳細說明如何融合數據框,這是第二種基本R方法的建議。
您的數據:
set.seed(12)
dfm <- matrix(round(rnorm(38*12), digits = 2),
nrow = 38, ncol = 12)
colnames(dfm) <- month.abb
df<- data.frame(Year=seq(1980, 2017), dfm)
首先,我建議您刪除Year
變量並將其放入行名稱中:
rownames(df)<-df$Year
df$Year <- NULL
#head(df)
然后,您可以將數據框強制轉換為矩陣。 注意矩陣的方向-在將其解釋為向量之前,您必須對其進行轉置。
df_ts <- ts(as.vector(t(as.matrix(df))),
start=c(1980,1), end=c(2017,12), frequency=12)
現在,您可以繪制ts
對象:
plot(df_ts)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.