【问题标题】:Create a list from binary time series从二进制时间序列创建列表
【发布时间】:2016-12-26 17:10:46
【问题描述】:

我有一个简单的二进制时间序列,它列出了美国是否处于衰退中 (https://fred.stlouisfed.org/series/USRECM),我想将其添加为 dygraph 中的阴影区域。但是 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")
)

【问题讨论】:

    标签: r time-series timespan dygraphs


    【解决方案1】:

    是的,使用“seq”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
    

    您可以使用seq 中的by 参数和lubridate 函数创建许多其他日期对,按不同的年数、周数、天数等​​。

    【讨论】: