如何增加连续序列中每个中断的等级

时间:2015-11-19 20:11:15

标签: r rank

我的数据框中有一个变量,一周,代表那个,一周和一年(例如201501 = 2015年第1周)。我想对这个变量进行排名,但是当n + 1不紧跟n时,增加排名。最终我希望排名看起来如下:

yearweek     rank
201501       1
201502       1
201503       1
201507       2
201510       3
201511       3
201512       3
201520       4

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

我们取相邻元素的差异,检查它是否不等于1,并得到逻辑向量的累积和。

df1$rank <- cumsum(c(TRUE,diff(df1$yearweek)!=1))
df1
#  yearweek rank
#1   201501    1
#2   201502    1
#3   201503    1
#4   201507    2
#5   201510    3
#6   201511    3
#7   201512    3
#8   201520    4