2017-07-28 116 views
1

我想要繪製在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 

Similar question已經在幾年前問過,但我想答案是不能夠解決這個問題。

+0

你看過'?rle'嗎? –

回答

2
data <- read.csv('recession.csv') 

# Add new first and last row to the data, to enable the detection of change 
# in the beginning and in the end of the time series. 
data <- rbind(c(NA, ifelse(data$Recession[1] == 1, yes = 0, no = NA)), 
       data, 
       c(NA, ifelse(data$Recession[length(data$Recession)] == 1, 0, NA))) 

# Create new data frame containing the start and end of each recession period. 
# The periods are detected via built in diff function which calculates 
# differences between all consecutive values in a vector. 
recession.periods <- data.frame(
    Start = data$Date[which(diff(data$Recession, lag = 1) == 1) + 1], 
    End = data$Date[which(diff(data$Recession, lag = 1) == -1)]) 
相關問題