Berechnen Sie den gleitenden Durchschnitt anhand von 2 kategorialen Spalten und kombinierten DatenIch habe einen Datensatz mit durchschnittlich Dutzenden von Eiern pro OrderId und OrderDate für Trial (Vorher, Nachher) und TrialWeek (1, 2, 3, 4, 5). Ich möchte die Funktion "Gleitender Durchschnitt" verwenden, um den Mittelwert von Dutzenden am Ende jeder Woche anhand der Daten der vorherigen Wochen zu berechnen und diese Zahl dann in eine neue Spalte einzugeben. Daher sollte für jede Zeile, die dieselbe Testversion und dieselbe Testwoche hat, ein Mittelwert von Dutzenden wiederholt werden.
Beispielsweise:
Trial == Before & TrialWeek == 1 = Mittlere Dutzende für TrialWeek 1
Testversion == Vor & Testwoche == 1 & 2 = Mittlere Dutzend Testwoche 2
Testversion == Vor & Testwoche == 1 & 2 & 3 = Mittlere Dutzend Testwoche 3 und so weiter.
Moving Average möchte, dass ich die Anzahl der Zeilen eingebe, für die der Durchschnitt berechnet wird. Die Anzahl der Zeilen pro TrialWeek ist jedoch nicht gleich. Daher kann ich keine feste Anzahl von Zeilen verwenden, um dies zu berechnen. Ich weiß, dass ich eine Formel schreiben muss, um dies zu tun, aber ich bin nicht sicher, wie ich die Formel zusammenstellen soll. Ich verwende JMP Pro 16. Jede Hilfe wäre sehr dankbar!
SkriptingBetreff: Berechnen Sie den gleitenden Durchschnitt anhand von 2 kategorialen Spalten und kombinierten DatenSuchst du danach?

x = .;
curWeek = :TrialWeek;
If( :Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1],
x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;
Betreff: Berechnen Sie den gleitenden Durchschnitt anhand von 2 kategorialen Spalten und kombinierten DatenVielen Dank @ txnelson !
Ich habe den Code angepasst, um auch den gleitenden Durchschnitt für Trial == After zu berechnen. Das scheint also zu funktionieren. Ich bemerkte jedoch, dass der Code den gleitenden Durchschnitt für TrialWeek == 1 nicht berechnete, es sei denn, ich hatte die Tabelle sortiert.
x = .;
curWeek = :TrialWeek;
If(
:Trial == "Before" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "Before" & :TrialWeek <= curWeek, :Dozens, . ) ),
:Trial == "After" & :TrialWeek != :TrialWeek[Row() + 1], x = Col Mean( If( :Trial == "After" & :TrialWeek <= curWeek, :Dozens, . ) )
);
x;