将数据框转换为R失业的时间序列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据框转换为R失业的时间序列相关的知识,希望对你有一定的参考价值。
我从劳工统计局下载了1980 - 2017年的失业数据。我将文件上传到R并尝试将其转换为as.ts(失业)的时间序列,但我没有得到合适的图表。我有13列,第1列代表1980年至2017年的年份值,其他12列代表失业的月份和值。例如:
as.ts(失业)
时间序列:
开始= 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
十一月和十二月因空间受到压制
答案
您可以使用tidyverse
进行tidyr::gather()
方式,或者将数据框强制转换为矩阵,然后再将其转换为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)
另一答案
请注意,数据框中的列表示具有不同含义的不同内容(混合变量和观察)。例如,第一列是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)
以上是关于将数据框转换为R失业的时间序列的主要内容,如果未能解决你的问题,请参考以下文章