Борьба Создание фрейма данных для анализа временных рядов - PullRequest
0 голосов
/ 21 марта 2020

У меня есть данные по безработице из Экономического института c. Я пытаюсь провести анализ временных рядов. Вот проблеск данных:

str(unemployment)
'data.frame':   493 obs. of  122 variables:
 $ Month: Factor w/ 12 levels "Jan","Feb","Mar",..: 12 1 2 3 4 5 6 7 8 9 ...
 $ Year: Factor w/ 42 levels "78","79","80",..: 1 2 2 2 2 2 2 2 2 2 ...
 $ All: num  0.061 0.061 0.06 0.06 0.059 0.059 0.059 0.058 0.058 0.058 ...

Это только три переменные, с которыми я заинтересован в создании фрейма данных. Для начала я разбил данные на более мелкие подмножества, разбитые по годам:

library(repr)
library(forecast)
sub.1993 <- subset(unemployment, unemployment[,2] == 93)
sub.1994 <- subset(unemployment, unemployment[,2] == 94)
sub.1995 <- subset(unemployment, unemployment[,2] == 95)
sub.1996 <- subset(unemployment, unemployment[,2] == 96)
sub.1997 <- subset(unemployment, unemployment[,2] == 97)
sub.1998 <- subset(unemployment, unemployment[,2] == 98)
sub.1999 <- subset(unemployment, unemployment[,2] == 99)
sub.2000 <- subset(unemployment, unemployment[,2] == 00)
sub.2001 <- subset(unemployment, unemployment[,2] == 01)
sub.2002 <- subset(unemployment, unemployment[,2] == 02)
sub.2003 <- subset(unemployment, unemployment[,2] == 03)
sub.2004 <- subset(unemployment, unemployment[,2] == 04)
sub.2005 <- subset(unemployment, unemployment[,2] == 05)
sub.2006 <- subset(unemployment, unemployment[,2] == 06)
sub.2007 <- subset(unemployment, unemployment[,2] == 07)
sub.2008 <- subset(unemployment, unemployment[,2] == 08)
sub.2009 <- subset(unemployment, unemployment[,2] == 09)
sub.2010 <- subset(unemployment, unemployment[,2] == 10)
sub.2011 <- subset(unemployment, unemployment[,2] == 11)
sub.2012 <- subset(unemployment, unemployment[,2] == 12)
sub.2013 <- subset(unemployment, unemployment[,2] == 13)
sub.2014 <- subset(unemployment, unemployment[,2] == 14)
sub.2015 <- subset(unemployment, unemployment[,2] == 15)
sub.2016 <- subset(unemployment, unemployment[,2] == 16)
sub.2017 <- subset(unemployment, unemployment[,2] == 17)
sub.2018 <- subset(unemployment, unemployment[,2] == 18)
sub.2019 <- subset(unemployment, unemployment[,2] == 19)

Затем я подготавливаю данные для анализа временных рядов по среднему месячному уровню занятости, отсортированному по году для всего США

mean1993 <- sapply(split(sub.1993$All, factor(sub.1993$Month, ordered=TRUE)), mean)
mean1994 <- sapply(split(sub.1994$All, factor(sub.1994$Month, ordered=TRUE)), mean)
mean1995 <- sapply(split(sub.1995$All, factor(sub.1995$Month, ordered=TRUE)), mean)
mean1996 <- sapply(split(sub.1996$All, factor(sub.1996$Month, ordered=TRUE)), mean)
mean1997 <- sapply(split(sub.1997$All, factor(sub.1997$Month, ordered=TRUE)), mean)
mean1998 <- sapply(split(sub.1998$All, factor(sub.1998$Month, ordered=TRUE)), mean)
mean1999 <- sapply(split(sub.1999$All, factor(sub.1999$Month, ordered=TRUE)), mean)
mean2000 <- sapply(split(sub.2000$All, factor(sub.2000$Month, ordered=TRUE)), mean)
mean2001 <- sapply(split(sub.2001$All, factor(sub.2001$Month, ordered=TRUE)), mean)
mean2002 <- sapply(split(sub.2002$All, factor(sub.2002$Month, ordered=TRUE)), mean)
mean2003 <- sapply(split(sub.2003$All, factor(sub.2003$Month, ordered=TRUE)), mean)
mean2004 <- sapply(split(sub.2004$All, factor(sub.2004$Month, ordered=TRUE)), mean)
mean2005 <- sapply(split(sub.2005$All, factor(sub.2005$Month, ordered=TRUE)), mean)
mean2006 <- sapply(split(sub.2006$All, factor(sub.2006$Month, ordered=TRUE)), mean)
mean2007 <- sapply(split(sub.2007$All, factor(sub.2007$Month, ordered=TRUE)), mean)
mean2008 <- sapply(split(sub.2008$All, factor(sub.2008$Month, ordered=TRUE)), mean)
mean2009 <- sapply(split(sub.2009$All, factor(sub.2009$Month, ordered=TRUE)), mean)
mean2010 <- sapply(split(sub.2010$All, factor(sub.2010$Month, ordered=TRUE)), mean)
mean2011 <- sapply(split(sub.2011$All, factor(sub.2011$Month, ordered=TRUE)), mean)
mean2012 <- sapply(split(sub.2012$All, factor(sub.2012$Month, ordered=TRUE)), mean)
mean2013 <- sapply(split(sub.2013$All, factor(sub.2013$Month, ordered=TRUE)), mean)
mean2014 <- sapply(split(sub.2014$All, factor(sub.2014$Month, ordered=TRUE)), mean)
mean2015 <- sapply(split(sub.2015$All, factor(sub.2015$Month, ordered=TRUE)), mean)
mean2016 <- sapply(split(sub.2016$All, factor(sub.2016$Month, ordered=TRUE)), mean)
mean2017 <- sapply(split(sub.2017$All, factor(sub.2017$Month, ordered=TRUE)), mean)
mean2018 <- sapply(split(sub.2018$All, factor(sub.2018$Month, ordered=TRUE)), mean)
mean2019 <- sapply(split(sub.2019$All, factor(sub.2019$Month, ordered=TRUE)), mean)

Теперь я создаю фрейм данных для анализа:

mean.monthly.rate <- data.frame('year'=c(rep(1993,12),rep(1994,12),rep(1995,12),rep(1996,12),rep(1997,12),rep(1998,12),rep(1999,12),rep(2000,12),rep(2001,12),rep(2002,12),rep(2003,12),rep(2004,12),rep(2005,12),rep(2006,12),rep(2007,12),rep(2008,12),rep(2009,12),rep(2010,12),rep(2011,12),rep(2012,12),rep(2013,12),rep(2014,12),rep(2015,12),rep(2016,12),rep(2017,12),rep(2018,12),rep(2019,12)), 'month'=c(rep('Jan',27),rep('Feb',27),rep('Mar',27),rep('Apr',27),rep('May',27),rep('Jun',27),rep('Jul',27),rep('Aug',27),rep('Sep',27),rep('Oct',27),rep('Nov',27),rep('Dec',27)), 'rate'=c(mean1993,mean1994,mean1995,mean1996,mean1997,mean1998,mean1999,mean2000,mean2001,mean2002,mean2003,mean2004,mean2005,mean2006,mean2007,mean2008,mean2009,mean2010,mean2011,mean2012,mean2013,mean2014,mean2015,mean2016,mean2017,mean2018,mean2019))

Я хочу создать фрейм данных с x наблюдениями и 3 переменными; однако результирующий кадр данных имеет 206 переменных. Почему это? Разве фрейм данных не должен состоять только из 3 переменных, которые я создал выше?

head(mean.monthly.rate)
 year month rate.Jan rate.Feb rate.Mar rate.Apr rate.May rate.Jun rate.Jul rate.Aug rate.Sep rate.Oct
1 1993   Jan    0.075    0.075    0.075    0.074    0.074    0.073    0.073    0.072    0.071    0.071
2 1993   Jan    0.075    0.075    0.075    0.074    0.074    0.073    0.073    0.072    0.071    0.071
3 1993   Jan    0.075    0.075    0.075    0.074    0.074    0.073    0.073    0.072    0.071    0.071
4 1993   Jan    0.075    0.075    0.075    0.074    0.074    0.073    0.073    0.072    0.071    0.071
  rate.Nov rate.Dec rate.Jan.1 rate.Feb.1 rate.Mar.1 rate.Apr.1 rate.May.1 rate.Jun.1 rate.Jul.1 rate.Aug.1
1     0.07    0.069      0.068      0.068      0.067      0.067      0.066      0.065      0.065      0.064
2     0.07    0.069      0.068      0.068      0.067      0.067      0.066      0.065      0.065      0.064
3     0.07    0.069      0.068      0.068      0.067      0.067      0.066      0.065      0.065      0.064
4     0.07    0.069      0.068      0.068      0.067      0.067      0.066      0.065      0.065      0.064
str(mean.monthly.rate)
'data.frame':   324 obs. of  206 variables:
 $ year       : num  1993 1993 1993 1993 1993 ...
 $ month      : Factor w/ 12 levels "Apr","Aug","Dec",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ rate.Jan   : num  0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 ...
 $ rate.Feb   : num  0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 ...
 $ rate.Mar   : num  0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 ...
 $ rate.Apr   : num  0.074 0.074 0.074 0.074 0.074 0.074 0.074 0.074 0.074 0.074 ...
...

Как мне переписать код, чтобы у меня был фрейм данных с тремя переменными: годом, месяцем и скоростью, с тем же числом наблюдений?

...