簡體   English   中英

根據觀察日期分組觀察次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM