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