Ich habe Daten in Spalten, die ich Berechnungen ausführen muss. Ist es möglich, dies mit den vorherigen Zeilenwerten zu tun, ohne eine Schleife zu verwenden? Z.B. Wenn in der ersten Spalte der Wert 139 ist, berechne den Median der letzten 5 Werte und die prozentuale Änderung des Wertes 5 Zeilen darüber und den Wert in der aktuellen Zeile?Berechnung in Spalten mit vorherigen Zeile Wert ohne Schleifen
ID Data PF
135 5 123
136 4 141
137 5 124
138 6 200
139 1 310
140 2 141
141 4 141
Also hier in diesem Datensatz würden Sie tun:
- Finden
139
inID
Spalte - Return durchschnittlich letzten 5 Zeilen in
Data
(Gibt4.2
) - Return Performance von Werten in
PF
5 Zeilen über dem aktuellen Wert (gibt152%
)
Wenn ich würde eine Schleife tun es wie folgt aussieht:
for (i in 1:nrow(data)){
if(data$ID == "139" & i>=3)
{data$New_column <- data[i,"PF"]/data[i-4,"PF"] - 1
}
Das Problem ist, dass die Schleife Punkte viele Daten aufgrund zu lange dauert. Die ID 139 erscheint mehrmals im Datensatz.
Vielen Dank. Carlos
Fügen Sie ein reproduzierbares Beispiel und eine erwartete Ausgabe hinzu. – Sotos
Schauen Sie sich 'rollapply' im' zoo' Paket an. – Tutuchan
Können Sie definieren, was Sie mit der Leistung von Werten in PF 5 Zeilen über dem aktuellen Wert meinen? Es ist gemein? Sein Median? In jedem Fall haben Sie nicht 5 Zeilen über 139 nur 4. – aichao