我有一个简单的二进制时间序列,它列出了美国是否处于经济衰退期间(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")
)
答案 0 :(得分:1)
是的,日期和lubridate
包的'seq'function。例如,这将创建一系列相隔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
参数,按不同的年数,周数,天数等创建许多其他日期对。