Создать список из двоичного временного ряда

У меня есть простой двоичный временной ряд, в котором указано, находятся ли США в рецессии или нет (https://fred.stlouisfed.org/series/USRECM), и я хочу добавить его как заштрихованную область в dygraph. Однако dygraphs принимает только список (см. ссылку и ниже), поэтому мне нужен быстрый и простой способ создайте список каждого периода рецессии, который отмечен цифрой 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")
)

person AbeeCrombie    schedule 26.12.2016    source источник


Ответы (1)


Да, с функцией seq для дат и пакета 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.

person Jaime Caffarel    schedule 26.12.2016