首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按观测日期分组统计观测值

按观测日期分组统计观测值
EN

Stack Overflow用户
提问于 2021-02-13 04:06:12
回答 3查看 40关注 0票数 1

我有一个简单的数据框,其中包含一系列ID的标注日期的观察值。

代码语言:javascript
复制
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))
代码语言:javascript
复制
   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,依此类推。

代码语言:javascript
复制
   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

我相信这样的问题以前已经有人问过,也有人回答过,但我一直没能找到。如果有任何帮助或指导,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-13 04:15:42

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2021-02-13 04:17:20

关于

代码语言:javascript
复制
> 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
票数 1
EN

Stack Overflow用户

发布于 2021-02-13 06:38:28

使用data.table

代码语言:javascript
复制
library(data.table)
setDT(df)[, order := frank(Date, ties.method = 'dense'), ID]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66178398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档