我正在尝试在 R 中绘制衰退阴影期。请考虑以下示例,衰退期被识别为 1,非衰退期被识别为 0。
Date Recession
1918-09-01 1
1918-10-01 1
1918-11-01 1
1918-12-01 1
1919-01-01 1
1919-02-01 1
1919-03-01 1
1919-04-01 0
1919-05-01 0
1919-06-01 0
1919-07-01 0
1919-08-01 0
1919-09-01 0
1919-10-01 0
1919-11-01 0
1919-12-01 0
1920-01-01 0
1920-02-01 1
1920-03-01 1
1920-04-01 1
1920-05-01 1
谁能帮我找出经济衰退期的开始日期和结束日期?例如:
Start End
1918-09-01 1919-03-01
1920-02-01 1920-05-01
几年前就有人问过同样的问题,但我认为答案并不能解决这个问题。请参阅R Recession Dates Conversion
提前致谢!
最佳答案
使用data.table
包中的rleid()
函数:
library(data.table)
data.table(DF)[, .(min(Date), max(Date)), by = .(rleid(Recession), Recession)][
Recession == 1, .(Start = V1, End = V2)]
Start End 1: 1918-09-01 1919-03-01 2: 1920-02-01 1920-05-01
说明
第一个 data.table
表达式查找所有时间段的开始和结束日期。 rleid()
是一个便捷函数,用于生成要在分组操作中使用的游程类型 id 列。
data.table(DF)[, .(min(Date), max(Date)), by = .(rleid(Recession), Recession)]
rleid Recession V1 V2 1: 1 1 1918-09-01 1919-03-01 2: 2 0 1919-04-01 1920-01-01 3: 3 1 1920-02-01 1920-05-01
第二个表达式仅选择经济衰退期并返回开始
和结束
日期。
数据
DF <- readr::read_table(
"Date Recession
1918-09-01 1
1918-10-01 1
1918-11-01 1
1918-12-01 1
1919-01-01 1
1919-02-01 1
1919-03-01 1
1919-04-01 0
1919-05-01 0
1919-06-01 0
1919-07-01 0
1919-08-01 0
1919-09-01 0
1919-10-01 0
1919-11-01 0
1919-12-01 0
1920-01-01 0
1920-02-01 1
1920-03-01 1
1920-04-01 1
1920-05-01 1 "
)
关于python - R 选取经济衰退期的开始日期和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288217/