如何检测恒定周期的开始和结束?
问题描述:
我想要绘制在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已经在几年前问过,但我想答案是不能够解决这个问题。
答
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)])
你看过'?rle'吗? –