Die Frage ist ziemlich geradlinig, nicht sicher über die Lösung. Beispielcode für das, was ich versuche zu tun ist:R - cummean kombiniert mit weighted.mean
library(dplyr)
# initialize a
a = c(5, 6, 8, 9, 10, 15, 7, 9)
# run cummean from dplyr, result
round(cummean(a), digits = 2)
[1] 5.00 5.50 6.33 7.00 7.60 8.83 8.57 8.62
# run weighted.mean from base r, with weights passed as 2nd param
weighted.mean(a, seq(1, length(a), by = 1)/sum(seq(1, length(a), by = 1)))
[1] 9.388889
Hier ist, wo mein Problem ein bisschen anders ist. Ich möchte einen mit den verschiedenen Gewichten gewichteten Cummean-Vektor berechnen. macht meine eigene Funktion für die Anzeige auf, und ein Gefühl von dem, was Ergebnis i zu erhalten suchen:
round(weighted.cummean(a), digits = 2)
[1] 5.00, 5.67, 6.83, 7.70, 8.47, 10.33, 9.50, 9.39
als Referenz auf, wie diese Werte berechnet werden, können Sie diese für-Schleife laufen mit weighted.mean in der Schleife für jede Berechnung:
b = c()
for(i in 1:length(a)) {
weights = seq(1, i, by = 1)/sum(seq(1, i, by = 1))
b = c(b, weighted.mean(a[1:i], weights))
}
ich denke, meine Frage fasst zu - können wir die weighted.mean for-Schleife in einen 1-Liner von Code unter Verwendung cummean oder eine ähnliche Funktion wie cummean drehen?
Danke!
Sie vielen Dank, das ist perfekt. Ich gehe mit der ersten Lösung, da ich mit dem Zoopaket nicht vertraut bin – Canovice