簡體   English   中英

將數據幀轉換為R失業的時間序列

[英]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)

ts

暫無
暫無

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

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