【发布时间】:2019-07-22 10:38:02
【问题描述】:
我想计算一个按客户日期计算订单的列。
这里有一些玩具代码:
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 解决方案。不确定是什么解决了这个问题,但它不可能是火箭科学。
任何帮助都会很棒! 先谢谢大家了
【问题讨论】:
-
df %>% mutate(ord=1:n()) %>% arrange(Date) %>% group_by(ID) %>% mutate(n=1:n()) %>% arrange(ord) %>% select(-ord) -
嗨,这会引发错误。错误:n() 只能在数据上下文中调用
-
df %>% arrange(Date) %>% group_by(ID) %>% mutate(n = row_number()) -
Ronak,谢谢你,但同样的错误:错误:row_number() 只能在数据上下文中调用
-
这两种结构都是正确的。试试
dplyr::n()或dplyr::row_number()。