Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按ID计数日期(顺序)[R]_R_Count_Dplyr_Aggregate - Fatal编程技术网

按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