Schleifen von Rechenlogiken

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
AL1984
Beiträge: 1
Registriert: Di Jan 19, 2021 9:59 am

Schleifen von Rechenlogiken

Beitrag von AL1984 »

Hallo zusammen,
ich bin neu im Forum. Ich habe da ein Problem und zwar weiß ich nicht, wie ich folgende Rechenlogik in R einbauen kann, ohne jede Rechnung einzeln anzugeben.Ich habe da an eine Schlefe gedacht, aber weiß noch nicht ganz wie ich es umsetzen kann.
Folgendes Problem: Ich habe einen berechneten Rest(Vorgänge), diese sollen zu einer bestimmten Anzahl dazugezählt werden. Allerdings soll dieser Rest z.B. gleichmässig auf 4 Tage aufgeteilt werden.

Code: Alles auswählen

Zahl Vorgänge (V1)   Rest(v2)     Rest durch Anzahl Tage(v3)   Rechnung
100                         16              4                                         V1
200                         10             2,5                                        V1+4
150                         14             3,5                                        V1+4+2,5
400                         13             3,25                                      V1+4+2,5+3,5
200                         15             3,75                                      V1+4+2,5+3,5+3,25
100                         40             10                                         V1+2,5+3,5+3,25+3,75
.....
Dies würde über 365 Zeilen gehen(Berechnung fürs Jahr). Zudem soll die Zahl der Tage(hier4 als Beispiel) variabel bleiben, sprich ersetzbar durch dede andere ganze Zahl.
Danke schon mal!
Zuletzt geändert von jogo am Di Jan 19, 2021 10:45 am, insgesamt 1-mal geändert.
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Schleifen von Rechenlogiken

Beitrag von jogo »

Hallo AL,

willkommen im Forum!
Du suchst so etwas wie eine rollende Summe über die vergangenen 4 Zahlen.
Eventuell kann man rollapply() aus dem Paket Zoo einsetzen oder man schreibt selber eine kleine Funktion.

...
Für den Anfang sollte das reichen:

Code: Alles auswählen

cumRest <- function(Rest, n=4) {
  Rn <- R/n
  Rneu <- numeric(length(R))
  Rneu[1] <- 0
  Rneu[2:(n+1)] <- cumsum(Rn[1:n])
  for (i in (n+2):length(R)) Rneu[i] <- sum(Rn[(i-n):(i-1)])
  Rneu
}
Diese Funktion liefert dann den Vektor, der zur Spalte V1 addiert werden soll.

Gruß, Jörg
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Schleifen von Rechenlogiken

Beitrag von bigben »

Ich bin unsicher, ob ich die Frage im Detail verstehe. Ich denke aber dennoch, dass Dir die Funktion cumsum() fehlen könnte.

Code: Alles auswählen

RestDurchAnzahlTage <- c(4, 2.5, 3.5, 3.25, 3.75, 10)
cumsum(RestDurchAnzahlTage)
c(4, 4+2.5, 4+2.5+3.5, 4+2.5+3.5+3.25, 4+2.5+3.5+3.25+3.75, 4+2.5+3.5+3.25+3.75+10)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten