首页 > 解决方案 > 按 ID [in R] 计算日期(按顺序)

问题描述

我想计算一个按客户日期计算订单的列。

这里有一些玩具代码:

Date <- as.Date(c('2006-08-30','2006-08-23', '2006-09-06', '2006-09-13', '2006-09-20')) 
ID <- c("x1","x1","X2","X3","x1") 
TransNo<-c("123","124","125","126","127")

df<-data.frame(ID,Date,TransNo) 

我的预期结果如下所示,其中“Times”是所需的变量:

ID       Date TransNo Times
1 x1 2006-08-30     123     2
2 x1 2006-08-23     124     1
3 X2 2006-09-06     125     1
4 X3 2006-09-13     126     1
5 x1 2006-09-20     127     3

我尝试了一些带有 count / n 或长度的聚合和 dplyr 解决方案。不知道是什么解决了这个问题,但它不能是火箭科学。

任何帮助都会很棒!谢谢大家

标签: rcountdplyraggregate

解决方案


这是做你想做的吗?

df<-data.frame(ID,Date,TransNo) %>%
  arrange(Date) %>%
  group_by(ID) %>%
  mutate(dummy = 1) %>%
  mutate(times = cumsum(dummy)) %>%
  select(-dummy)

返回

 ID    Date       TransNo times
  <fct> <date>     <fct>   <dbl>
1 x1    2006-08-23 124         1
2 x1    2006-08-30 123         2
3 X2    2006-09-06 125         1
4 X3    2006-09-13 126         1
5 x1    2006-09-20 127         3

推荐阅读