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
Hilfe beim Ereigniszählen
Re: Hilfe beim Ereigniszählen
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
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
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Hilfe beim Ereigniszählen
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
vielen Dank.
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)
Re: Hilfe beim Ereigniszählen
Hallo Saturi,
wie wär es mit:(das Datumsformat muss man noch wieder gerade biegen)
Gruß, Jörg
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)
Gruß, Jörg
Re: Hilfe beim Ereigniszählen
Danke!
genau danach hab ich gesucht... Die Apply Familie war das was ich brauche.
vielen Dank!
ich habe
geändert und jetzt passts auch mit dem Datum.
Danke euch beiden!
lg.
Saturi
genau danach hab ich gesucht... Die Apply Familie war das was ich brauche.
vielen Dank!
ich habe
noch inCode: Alles auswählen
Tage <- min(MeineTabelle$Anfang):max(MeineTabelle$Ende)
Code: Alles auswählen
Tage <- seq(min(MeineTabelle$Anfang),max(MeineTabelle$Ende),by=1)
Danke euch beiden!
lg.
Saturi
Re: Hilfe beim Ereigniszählen
Wahrscheinlich kannst Du by=1 weglassen.
Gruß, Jörg
Gruß, Jörg