2
日期(區)的排名,我們將用下面的數據表開始:創建基於R中
id date
1: 1 2016-03-31
2: 1 2015-12-31
3: 1 2015-09-30
4: 1 2015-06-30
5: 1 2015-03-31
6: 2 2016-03-31
7: 2 2015-09-30
8: 2 2015-06-30
9: 2 2015-03-31
10: 2 2014-12-31
library(data.table)
DT <- data.table(c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
as.IDate(c("2016-03-31", "2015-12-31", "2015-09-30", "2015-06-30",
"2015-03-31", "2016-03-31", "2015-09-30", "2015-06-30",
"2015-03-31", "2014-12-31")))
setnames(DT, c("id", "date"))
對於每一個唯一的ID,我想創建一個排名。特定ID的最新日期應該爲0級。之後,我應該從該日期移除3個月(我不考慮日期)以獲得等級-1的日期。我必須重複,直到排名-19。添加包含排名的新列之後。
最終的輸出會看起來像(注意ID的排名= 2):
id date rank_year
1: 1 2016-03-31 0
2: 1 2015-12-31 -1
3: 1 2015-09-30 -2
4: 1 2015-06-30 -3
5: 1 2015-03-31 -4
6: 2 2016-03-31 0
7: 2 2015-09-30 -2
8: 2 2015-06-30 -3
9: 2 2015-03-31 -4
10: 2 2014-12-31 -5
謝謝!在我的情況下,我必須按照@akrun的建議添加'DT [order(id,-date)]'。我認爲你的解決方案根據特定ID的第一個日期進行排名。 – Alexis
@Alexis好的,爲這種情況編輯。 – Frank
我不太瞭解編輯。你能否提供新的例子以及期望的輸出?如果與原始問題背離太大,可以考慮將其張貼爲新問題。 – Frank