2016-12-26 30 views
1

创建列表,我有一个简单的二元时间序列,其中列出了如果美国经济步入衰退与否(https://fred.stlouisfed.org/series/USRECM),我想将其添加为一个dygraph阴影区域。然而,dygraph仅仅在一个列表中(见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

是,与日期的 '序列' functionlubridate包。例如,这将创建一个由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)) 

这将创建这样的事情:使用by参数seq

$`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 

您可以创建许多其他对日期的,由不同的数年,周,日等lubridate功能。