我必须对数据帧DF1进行排名
DF1
LC Day
1 RM11 2019-02-18
2 WK15 2019-02-18
3 AS17 2019-02-19
4 WK14 2019-02-19
5 RM11 2019-02-19
6 WK15 2019-02-20
7 AS17 2019-02-22
8 WK14 2019-02-22
在这里,我想按“ LC”列进行分组并按“ Day”列进行排名
输出应为:
LC Day Rank
1 RM11 2019-02-18 1
2 WK15 2019-02-18 1
3 AS17 2019-02-19 1
4 WK14 2019-02-19 1
5 RM11 2019-02-19 2
6 WK15 2019-02-20 2
7 AS17 2019-02-22 2
8 WK14 2019-02-22 2
我尝试了以下代码,但它使我在整数中排名:
> workingday = as.data.frame(workingday %>% group_by(LC) %>%
+ mutate(rank = rank(Day)) %>%
+ arrange(Day))
有人可以帮我一些其他代码吗?
答案 0 :(得分:2)
您可以像使用ave
:
x$Rank <- ave(unclass(as.Date(x$Day)), x$LC, FUN=order)
x
# LC Day Rank
#1 RM11 2019-02-18 1
#2 WK15 2019-02-18 1
#3 AS17 2019-02-19 1
#4 WK14 2019-02-19 1
#5 RM11 2019-02-19 2
#6 WK15 2019-02-20 2
#7 AS17 2019-02-22 2
#8 WK14 2019-02-22 2
答案 1 :(得分:1)
使用data.table
library(data.table)
setDT(workingday)[, Rank := frank(as.IDate(Day)), by = LC]
答案 2 :(得分:0)
workingday %>%
group_by(LC) %>%
mutate(Rank = rank(as.Date(Day)))