Sql R:按日期保留未结问题的数量
我的数据只有两列——开始的时间和开始的日期 我想保持一个总的开放数量 例如,以下是我的数据:Sql R:按日期保留未结问题的数量,sql,r,date,Sql,R,Date,我的数据只有两列——开始的时间和开始的日期 我想保持一个总的开放数量 例如,以下是我的数据: Issue Day Started Day Stopped A 7-01-2013 Still Open B 7-04-2013 7-06-2013 C 7-09-2013 7-10-2013 D 7-09-2013 7-11-2013 E 7-09-2013 Still
Issue Day Started Day Stopped
A 7-01-2013 Still Open
B 7-04-2013 7-06-2013
C 7-09-2013 7-10-2013
D 7-09-2013 7-11-2013
E 7-09-2013 Still Open
F 7-11-2013 Still Open
我希望我的数据是这样的:
Date Issues Open
7-01-2013 1
7-02-2013 1
7-03-2013 1
7-04-2013 2
7-05-2013 2
7-06-2013 1
7-07-2013 1
7-08-2013 1
7-09-2013 4
7-10-2013 3
7-11-2013 3
关于如何得到这个有什么建议吗?谢谢 感谢
Wen
指出我原来的答案没有回答OP的要求。我想补充一个必要的tidyverse回答:
library(dplyr)
library(tidyverse)
DF$Stopped[is.na(DF$Stopped)] <- max(DF$Started)+1
DF %>%
group_by( Issue ) %>%
nest() %>%
mutate(data = map(data, ~ seq(.x$Started, .x$Stopped-1, 1))) %>%
unnest() %>%
group_by(data) %>%
summarise(OpenIssues=sum(!is.na(Issue)))
库(dplyr)
图书馆(tidyverse)
DF$Stopped[is.na(DF$Stopped)]%
分组人(发行量)%>%
嵌套()%>%
突变(数据=映射(数据,~seq(.x$start,.x$Stopped-1,1)))%>%
unest()%>%
分组依据(数据)%>%
总结(OpenIssues=sum(!is.na(问题)))
df[df=='Still Open']='3000-01-01'#小把戏
df$Day.start=as.Date(df$Day.start)
df$Day.Stopped=as.Date(df$Day.Stopped)
df1=数据帧(日期=序号(截至日期(“2013/07/01”),by=“day”,length.out=20))
df1['未解决的问题]=NA
对于(i in 1:dim(df1)[1]){
df1$`Issues Open`[i]=总和(df$Day.Starteddf1$Date[i])
}
>df1
开放日期问题
1 2013-07-01 1
2 2013-07-02 1
3 2013-07-03 1
4 2013-07-04 2
5 2013-07-05 2
6 2013-07-06 1
7 2013-07-07 1
8 2013-07-08 1
9 2013-07-09 4
10 2013-07-10 3
11 2013-07-11 3
sql还是r?您正在寻找哪种解决方案?如果是sql,请标记您正在使用的dbms。您可以尝试我的解决方案~我不确定是否有更简洁的方法。这不是OP想要的。您可以澄清OP想要什么吗?开放案例计数,基于您的数据,在2017-01-03,我的数据中应该有6个案例仍然开放只有3个2017-01-03
条目…这个日期怎么可能还有6个案例开放?(请注意,OP没有提供与输出相对应的所有输入
数据。)2017-01-01和2017-01-02的案例开始时间在2017-01-03之前未结束。
df[df=='Still Open']='3000-01-01'# small trick
df$Day.Started=as.Date(df$Day.Started)
df$Day.Stopped=as.Date(df$Day.Stopped)
df1=data.frame(Date=seq(as.Date("2013/07/01"), by = "day", length.out = 20))
df1['Issues Open']=NA
for (i in 1:dim(df1)[1]){
df1$`Issues Open`[i]=sum(df$Day.Started<=df1$Date[i]&df$Day.Stopped>df1$Date[i])
}
> df1
Date Issues Open
1 2013-07-01 1
2 2013-07-02 1
3 2013-07-03 1
4 2013-07-04 2
5 2013-07-05 2
6 2013-07-06 1
7 2013-07-07 1
8 2013-07-08 1
9 2013-07-09 4
10 2013-07-10 3
11 2013-07-11 3