Hilfe beim Ereigniszählen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Saturi

Hilfe beim Ereigniszählen

Beitrag von Saturi »

Hallo zusammen,

ich habe eine Problemstellung, die ich trotz intensiver Internet Recherche nicht lösen kann und wende mich deshalb an euch mit der Bitte um Hilfe:

ich habe folgende Datenstruktur:

AuftragsName / ErstellungsDatum / AbschlussDatum

ich möchte nun in einem Diagramm darstellen, wie viele Aufträge über einen Zeitraum gesehen gleichzeitig offen waren.
Vor verzweiflung habe ich schon versucht, das ganze über eine doppelte while Schleife laufen zu lassen, indem ich für die oben genannnte Liste pro Eintrag jeweils jedes Datum erstelle, in dem der Auftrag offen war, um nachher über die Gruppieren Funktion die Anzahl zu zählen, wie oft ein Datum existiert. Doppelte While Schleifen, in denen dann Reihen einer Tabelle hinzugefügt werden scheint aber die Rechenzeit zu sprengen und kommt daher für mich so nicht in Frage.

Ich hoffe ihr könnt mir einen besseren Weg (vermutlich ist es mal wieder ganz einfach) verraten, wie ich meine Problemstellung lösen kann.

vielen Dank.

lg.
Saturi
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hilfe beim Ereigniszählen

Beitrag von bigben »

Die Rechenzeit zu sprengen? Wieviele Aufträge und was für Zeiträume sind das denn und wieviel Rechenzeit wäre erträglich?
Poste doch bitte mal Deinen Code und einen kleinen Ausschnitt von Deinem Datensatz.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Saturi

Re: Hilfe beim Ereigniszählen

Beitrag von Saturi »

Hallo,

mir geht es hier nicht um Sekunden bei der Rechenzeit. Aber ich würde doch trotzdem gerne keine Stunden vor der Rechner verbringen, bis er fertig wird.

hier ein Beispiel. Hierbei handelt es sich um 100 Datensätze, was schon seine paar Sekunden Zeit braucht.
Ich arbeite später aber mit ca. 15000 Datensätzen. Ich bin mir sicher, dass es eine viel bessere Umsetzung gibt, als meine:

ich brauche den Vektor "AlleTage" auch nicht zwingend, mir würde auch eine Zusammenfassung reichen, in der jedes Datum nur einmal drin steht und in einer zweiten Spalte wie viele Aufträge dieses Datum einschließen

Code: Alles auswählen

library("dplyr")

start <- as.Date("2017/01/01")
ende <- as.Date("2017/12/31")
set.seed(1)

ZufallsWerte <- seq(start, ende, by = "days")[sample(100)]
MeineTabelle <- data.frame(Anfang = ZufallsWerte, Ende = ZufallsWerte + sample(100, 100))
MeineTabelle$Tage <- MeineTabelle$Ende - MeineTabelle$Anfang 
head(MeineTabelle)


AlleTage <-data.frame(c(1))
colnames(AlleTage)[1] <- "AlleTage" #Dummyeintrag, um die Spalte bennen zu können

i=1
while( i< nrow(MeineTabelle))
{
  j=0
  while(j<=MeineTabelle$Tage[i])
  {
    
    AlleTage <- add_row(AlleTage,AlleTage=toString(MeineTabelle$Anfang[i]+j))
    j=j+1
  }
  i=i+1
}

AlleTage <- data.frame(AlleTage[2:nrow(AlleTage),])  #löschen des Dummyeintrags

plot(AlleTage)
vielen Dank.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hilfe beim Ereigniszählen

Beitrag von jogo »

Hallo Saturi,

wie wär es mit:

Code: Alles auswählen

Tage <- min(MeineTabelle$Anfang):max(MeineTabelle$Ende)
events <- sapply(Tage, function(x) sum(MeineTabelle$Anfang<=x & x<=MeineTabelle$Ende))
plot(events ~ Tage)
(das Datumsformat muss man noch wieder gerade biegen)

Gruß, Jörg
Saturi

Re: Hilfe beim Ereigniszählen

Beitrag von Saturi »

Danke!

genau danach hab ich gesucht... Die Apply Familie war das was ich brauche.
vielen Dank!

ich habe

Code: Alles auswählen

Tage <- min(MeineTabelle$Anfang):max(MeineTabelle$Ende)
noch in

Code: Alles auswählen

Tage <- seq(min(MeineTabelle$Anfang),max(MeineTabelle$Ende),by=1)
geändert und jetzt passts auch mit dem Datum.

Danke euch beiden!
lg.
Saturi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hilfe beim Ereigniszählen

Beitrag von jogo »

Wahrscheinlich kannst Du by=1 weglassen.

Gruß, Jörg
Antworten