如何将排名列添加到 R 中的排序日期?
How to add a rank column to sorted dates in R?
我在 R 中使用了这段代码:
df[with(df,order(ID,Date)),]
为我的数据框中的每个不同 ID 排序日期值。现在我想在排序的日期值旁边添加一个排名列(1 到 n),其中 rank = 1 是最旧的日期,rank = n 是每个不同 ID 的最新日期。
我看到了有关添加排名列的问题,但在使用日期值排序时没有看到。如何使用上面的代码添加此排名列?谢谢!
这是一个 dplyr
方法:
library(dplyr)
# Fake data
set.seed(5)
dat = data.frame(date=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-31"),
"1 day"), 12),
ID=rep(LETTERS[1:3], c(2,6,4)))
dat %>% group_by(ID) %>%
mutate(rank = rank(date)) %>%
arrange(date)
date ID rank
1 2015-01-07 A 1
2 2015-01-21 A 2
3 2015-01-03 B 1
4 2015-01-08 B 2
5 2015-01-14 B 3
6 2015-01-19 B 4
7 2015-01-20 B 5
8 2015-01-27 B 6
9 2015-01-06 C 1
10 2015-01-10 C 2
11 2015-01-22 C 3
12 2015-01-29 C 4
我在 R 中使用了这段代码:
df[with(df,order(ID,Date)),]
为我的数据框中的每个不同 ID 排序日期值。现在我想在排序的日期值旁边添加一个排名列(1 到 n),其中 rank = 1 是最旧的日期,rank = n 是每个不同 ID 的最新日期。
我看到了有关添加排名列的问题,但在使用日期值排序时没有看到。如何使用上面的代码添加此排名列?谢谢!
这是一个 dplyr
方法:
library(dplyr)
# Fake data
set.seed(5)
dat = data.frame(date=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-31"),
"1 day"), 12),
ID=rep(LETTERS[1:3], c(2,6,4)))
dat %>% group_by(ID) %>%
mutate(rank = rank(date)) %>%
arrange(date)
date ID rank
1 2015-01-07 A 1
2 2015-01-21 A 2
3 2015-01-03 B 1
4 2015-01-08 B 2
5 2015-01-14 B 3
6 2015-01-19 B 4
7 2015-01-20 B 5
8 2015-01-27 B 6
9 2015-01-06 C 1
10 2015-01-10 C 2
11 2015-01-22 C 3
12 2015-01-29 C 4