二进制向量的运行长度汇总(min,max,mean)

时间:2017-06-16 10:55:07

标签: r vector

我基本上试图对美国经济衰退做一些计算。 我从FRED下载了数据,它看起来像这样:

library(quantmod)
getSymbols("USREC",src="FRED")

1754 2001-01-01     0
1755 2001-02-01     0
1756 2001-03-01     0
1757 2001-04-01     1
1758 2001-05-01     1
1759 2001-06-01     1
1760 2001-07-01     1
1761 2001-08-01     1
1762 2001-09-01     1
1763 2001-10-01     1
1764 2001-11-01     1
1765 2001-12-01     0
1766 2002-01-01     0
1767 2002-02-01     0
1768 2002-03-01     0
1769 2002-04-01     0
1770 2002-05-01     0
1771 2002-06-01     0

其中1表示衰退,0表示非衰退(增长)。

我想计算连续1的平均长度,最大长度和最小长度。与0相同。

我想在优雅的时尚中做到这一点。我可能正在考虑将0转换为-1并进行一些总结。我搜索了很多,似乎无法找到一条好的工作途径。

这个帖子提供了一些线索,但他只是在密谋(据我所知): R Recession Dates Conversion

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

your_vector成为衰退/非经济衰退的二元向量,

oo <- with(rle(your_vector), split(lengths, values))
sapply(oo, function(x) c(min = min(x), max = max(x), mean = mean(x)))

我无法从quantmod获取您的数据,也不知道原因。