将日期向量转换为排名

Convert a date vector to ranks

我有日期向量:

d <- c("30/5/15", "6/6/15", "23/5/15")

我想将其转换为 2, 3, 1,从小到大,从大到新。

我试过 rank(d) 但看起来它只根据天数进行排名并反转,它 returns 3, 1, 2.

转换为Date class,然后numeric,然后rank

d <- c("30/5/15", "6/6/15", "23/5/15")

rank(as.numeric(as.Date(d, "%d/%m/%y")))

#[1] 2 3 1

来自评论的建议:

  • drop as.numeric,因为 rank 可以处理日期。尽管明确可能更可取。
  • 使用 lubridate 包:library(lubridate); rank(dmy(d))

将数据转换为日期格式,然后对其进行排名。内部日期将保存为数值。所以它可以排名。

d <- c("30/5/15", "6/6/15", "23/5/15")
rank(as.Date(d,'%d/%m/%y'))