按ID计数日期(顺序)[R]
我想计算一列,按客户日期统计订单 以下是一些玩具代码:按ID计数日期(顺序)[R],r,count,dplyr,aggregate,R,Count,Dplyr,Aggregate,我想计算一列,按客户日期统计订单 以下是一些玩具代码: 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) 我尝试了一些cou
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)
我尝试了一些count/n或length的聚合和dplyr解决方案。不确定是什么解决了这个问题,但这不可能是火箭科学
任何帮助都会很好!
提前谢谢大家这是你想要的吗
df<-data.frame(ID,Date,TransNo) %>%
arrange(Date) %>%
group_by(ID) %>%
mutate(dummy = 1) %>%
mutate(times = cumsum(dummy)) %>%
select(-dummy)
df%
安排(日期)%>%
分组依据(ID)%>%
变异(虚拟=1)%>%
变异(次数=总和(虚拟))%>%
选择(-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
ID日期转换次数
1 x1 2006-08-23 124 1
2 x1 2006-08-30 123 2
3 X2 2006-09-06125 1
4 X3 2006-09-13 126 1
5 x1 2006-09-20 127 3
这是否符合您的要求
df<-data.frame(ID,Date,TransNo) %>%
arrange(Date) %>%
group_by(ID) %>%
mutate(dummy = 1) %>%
mutate(times = cumsum(dummy)) %>%
select(-dummy)
df%
安排(日期)%>%
分组依据(ID)%>%
变异(虚拟=1)%>%
变异(次数=总和(虚拟))%>%
选择(-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
ID日期转换次数
1 x1 2006-08-23 124 1
2 x1 2006-08-30 123 2
3 X2 2006-09-06125 1
4 X3 2006-09-13 126 1
5 x1 2006-09-20 127 3
df%%>%mutate(ord=1:n())%%>%arrange(Date)%%>%groupby(ID)%%>%mutate(n=1:n())%%>%arrange(ord)%%>%select(-ord)
您好,这会引发一个错误。错误:n()只应在数据上下文中调用df%>%arrange(Date)%%>%groupby(ID)%%>%mutate(n=row_number())
Ronak,谢谢,但这里的错误是相同的:错误:row_number()只应在数据上下文中调用这两种构造都是正确的。请尝试dplyr::n()
或dplyr::row_number()
df%%>%mutate(ord=1:n())%%>%arrange(Date)%%>%group_by(ID)%%>%mutate(n=1:n())%%>%arrange(ord)%%select(-ord)
Hi,这会引发一个错误。错误:n()只应在数据上下文中调用df%>%arrange(Date)%%>%groupby(ID)%%>%mutate(n=row_number())
Ronak,谢谢,但这里的错误是相同的:错误:row_number()只应在数据上下文中调用这两种构造都是正确的。请尝试dplyr::n()
或dplyr::row_number()
。谢谢您,nogbad,但它从1到n计数,而不是每个ID和TransNoThank nogbad,但它从1到n计数,而不是每个ID和TransNo