将日期向量转换为排名
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'))
我有日期向量:
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'))