Seite 1 von 1

Schleifen von Rechenlogiken

Verfasst: Di Jan 19, 2021 10:16 am
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!

Re: Schleifen von Rechenlogiken

Verfasst: Di Jan 19, 2021 11:00 am
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

Re: Schleifen von Rechenlogiken

Verfasst: Di Jan 19, 2021 11:01 am
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