我有一个包含国家、年份和增长率三列的数据集,我想找出一个国家在3年或更长时间内增长率〉=6%的时期,旁边还有一列是该时期的平均增长率。
我需要创建一个数据框,如下所示:阿尔巴尼亚1999-2001年,0.133(即国家、时期和平均增长列)等。
我过滤了原始数据框,显示了增长率〉= 0.06的年份,这里有一个国家:
country cow_code years growth
1 Albania 339 1999 0.158
2 Albania 339 2000 0.106
3 Albania 339 2001 0.136
4 Albania 339 2003 0.123
5 Albania 339 2004 0.0930
6 Albania 339 2006 0.228
7 Albania 339 2007 0.238
8 Albania 339 2008 0.178
9 Albania 339 2010 0.0744
10 Albania 339 2018 0.0825
11 Albania 339 2019 0.137
12 Albania 339 2021 0.181
我想为我原始数据框中的所有国家生成这样的东西:
country period mean_growth
1 Albania 1999-2001 0.133
2 Albania 2006-2008 0.215
你知道我该怎么做吗?
2条答案
按热度按时间h6my8fg21#
您可以使用
cumsum(c(1, diff(years) != 1))
将数据按国家/地区拆分为连续年份组。数据
igetnqfo2#
下面是一个
data.table
方法:最好先按
years
排列,再确定连续年份,下面是添加了该步骤的dplyr
解决方案。数据: