2015-11-19 31 views
0

我在我的數據框中顯示了一個變量,即週年,即代表那一週,每週和每年(例如201501 = 2015年第1周)。我想排列這個變量,但是當n + 1不緊跟n時,它會增加排名。最終我想要的排名如下:如何在連續序列中爲每個中斷增加排名

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

我該怎麼去做這件事?

+0

如果以下解決方案解決了問題,請考慮通過單擊投票旁邊的勾號來接受解決方案。 – akrun

回答

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