2016-12-26 14 views
1

У меня есть простой двоичный временной ряд, в котором перечислены, если США находятся в состоянии рецессии или нет (https://fred.stlouisfed.org/series/USRECM), и я хочу добавить его в затененную область на диаграмме. Однако dygraphs принимает только список (см. link и ниже), поэтому мне нужен быстрый и простой способ создать список каждого периода рецессии, который обозначен знаком 1.Создать список из двоичных временных рядов

Любые эффективные способы сделать это в R без я пишу функцию, которая смотрит на текущие и отстающие значения.

recession_periods <- list(
    list(from = "1920-1-1", to = "1930-1-1"), 
    list(from = "1940-1-1", to = "1950-1-1"), 
    list(from = "1960-1-1", to = "1970-1-1") 
) 

ответ

1

Да, с 'Последовательность' function для даты и lubridate пакета. Например, это создаст последовательность дат, разделенных на 10 лет.

library(data.table) 
library(lubridate) 

elements <- data.table(from = seq(from = as.Date('1920-01-01'), to = as.Date('1990-01-01'),by = "10 year")) 
# Add the space in years between dates 
elements[, to := from + years(10)] 
finalList <- setNames(split(elements, seq(nrow(elements))), rownames(elements)) 

Это создаст что-то вроде этого:

$`1` 
     from   to 
1: 1920-01-01 1930-01-01 

$`2` 
     from   to 
1: 1930-01-01 1940-01-01 

$`3` 
     from   to 
1: 1940-01-01 1950-01-01 

$`4` 
     from   to 
1: 1950-01-01 1960-01-01 

$`5` 
     from   to 
1: 1960-01-01 1970-01-01 

$`6` 
     from   to 
1: 1970-01-01 1980-01-01 

$`7` 
     from   to 
1: 1980-01-01 1990-01-01 

$`8` 
     from   to 
1: 1990-01-01 2000-01-01 

Вы можете создать много других пары дат, по разному количеству лет, недели, дни и т.д., используя параметр by в seq а lubridate функции.