2017-06-20 2 views
0

Meine Daten sind nur 2 Spalten - wenn etwas begann und Tag begann es auf Ich möchte eine laufende Summe der Anzahl der Dinge offen halten.R: Anzahl der offenen Probleme nach Datum beibehalten

Zum Beispiel, hier ist meine Daten:

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 

Das ist, was ich meine Daten wie aussehen:

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 

Irgendwelche Tipps, wie diese zu bekommen? Vielen Dank!

+0

SQL- oder r? Welche Lösung suchst du? Wenn sql, markieren Sie die von Ihnen verwendeten dbms. –

+0

Sie können versuchen, meine Lösung ~ Ich bin mir nicht sicher, ob es mehr nette Art und Weise. – Wen

Antwort

0

Dank Wen zum Hinweis, dass meine ursprüngliche Antwort nicht die Anfrage von OP beantwortet. Ich wollte die obligate tidyverse Antwort hinzuzufügen:

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))) 
+0

das ist nicht, was OP wollte – Wen

+0

Könnten Sie klarstellen, was OP wollte? – CPak

+0

Offener Fall zählen, basierend auf Ihren Daten, am 2017-01-03 sollte 6 Fall noch geöffnet haben – Wen

1
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 
Verwandte Themen