[英]Number observations by group according to date of observation
我有一個簡單的數據框,其中包含一系列 ID 的過時觀察結果。
df<- data.frame(ID = c(1,1,1,1,2,2,2,2,3,3), Date = c(1981,1947,1981,1992,1999,2001,2000,2001,2017,2019))
ID Date
1 1 1981
2 1 1947
3 1 1981
4 1 1992
5 2 1999
6 2 2001
7 2 2000
8 2 2001
9 3 2017
10 3 2019
我只想根據觀察日期對每個 ID 的觀察結果進行編號。 最早觀察 = 1,然后是 2,依此類推。
ID Date order
1 1 1981 2
2 1 1947 1
3 1 1981 2
4 1 1992 3
5 2 1999 1
6 2 2001 3
7 2 2000 2
8 2 2001 3
9 3 2017 1
10 3 2019 2
我敢肯定,以前有人問過並回答過這樣的問題,但我一直找不到。 我將不勝感激任何幫助或指導。
df %>%
group_by(ID) %>%
mutate(order = dense_rank(Date)) %>%
ungroup()
## A tibble: 10 x 3
# ID Date order
# <dbl> <dbl> <int>
# 1 1 1981 2
# 2 1 1947 1
# 3 1 1981 2
# 4 1 1992 3
# 5 2 1999 1
# 6 2 2001 3
# 7 2 2000 2
# 8 2 2001 3
# 9 3 2017 1
#10 3 2019 2
關於什么
> df %>% group_by(ID) %>% mutate(order=rank(Date, ties.method = "min")) %>% ungroup()
# A tibble: 10 x 3
ID Date order
<dbl> <dbl> <int>
1 1 1981 2
2 1 1947 1
3 1 1981 2
4 1 1992 4
5 2 1999 1
6 2 2001 3
7 2 2000 2
8 2 2001 3
9 3 2017 1
10 3 2019 2
使用data.table
library(data.table)
setDT(df)[, order := frank(Date, ties.method = 'dense'), ID]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.