python - R 选取经济衰退期的开始日期和结束日期

标签 python r matlab time-series

我正在尝试在 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/

相关文章:

python - IF else 在 Panda 中基于数据框列值

r - 无法使用 addLegend(labels) 在 R 中的传单中添加分类图例

matlab - 使用 bsxfun 将一个矩阵的所有列乘以另一个矩阵

python - 给定 unicode 单词获取 wordnet 同义词集的正确方法是什么?

没有 root 的 Python XML 解析

read.table 函数和 stdin

r - 使用 R 根据 VIF 标准自动从数据框中删除变量

regex - MATLAB 正则表达式如果是单词的一部分则跳过

matlab - 如何在 MATLAB 中 fprintf 列标题?

Python argparse - 使用子解析器和父解析器时命令未正确解析