'n' Zeilendurchschnitt einer Spalte basierend auf einer Bedingung aus einer anderen Spalte -Hallo zusammen,
Ich suche nach 'n' Zeilendurchschnitt (im beigefügten Beispiel n == 3) basierend auf einer anderen Spalte (-- "Customer_ID"). Wenn meine Zeilennummer für jede Gruppe (Kunde) ein ganzzahliger Multiplikator von 'n' ist, dh [Row == Integer Constant xn]. Meine Grundformel funktioniert gut. Aber wenn Row != Integer Constant xn, nimmt es die restlichen Zeilen aus einer anderen Gruppe. Was mir falsche Ergebnisse liefert.
Was ich will -
Best Case - Berechnen Sie den Durchschnitt von 'n' Zeilen für eine Art Teilmenge der Daten basierend auf Cutomer_ID und setzen Sie für die letzten verbleibenden Zeilen den Durchschnittswert aus dem vorherigen Durchschnittswert.
Andernfalls - lassen Sie die leeren Werte unverändert.
Ich habe versucht, :Customer_ID != Lag(:Customer_ID, -2) einzugeben, aber es hat bei mir nicht funktioniert. Ich kann die Tabelle nach Customer_ID aufteilen und dann die Berechnung durchführen, aber - es gibt mehr als 5000 ID und ungefähr 20 Spalten für den Durchschnitt. Scheint nicht die beste Idee zu sein!
Irgendwelche Hilfe bitte?
Danke.

SkriptingBetreff: 'n'-Zeilen-Durchschnitt einer Spalte basierend auf einer Bedingung aus einer anderen Spalte -Hier ist die Formel, die ich mir ausgedacht habe

If( Row() == 1 | :Customer_ID != Lag( :Customer_ID ),
count = 0
);
If( count == 3, count = 0 );
count = count + 1;
If(
count == 1,
currentAvg = Col Moving Average( :Value, 1, before = 0, after = 2, :Customer_ID );
display = currentAvg;,
:Customer_ID == Lag( :Customer_ID, -2 ), display = .,
display = currentAvg
);
display;
Sie müssen sich die Zeit nehmen, das Skripting-Handbuch zu lesen, das Sie in der JMP-Dokumentationsbibliothek finden, die im Pulldown-Menü Hilfe verfügbar ist!
Betreff: 'n'-Zeilen-Durchschnitt einer Spalte basierend auf einer Bedingung aus einer anderen Spalte -Keine Ahnung, ob das in allen Fällen funktioniert, aber mit den bereitgestellten Beispieldaten funktioniert es:
If(Col Cumulative Sum(1, :Customer_ID) > Col Number(:Value, :Customer_ID) - 1,
Lag(Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID), 1),
If(Modulo(Col Cumulative Sum(1, :Customer_ID), 3) == 1,
Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID),
.
)
)
Überprüfen Sie, was jede der Funktionen/Formeln aus dem Skript-Index/der Skript-Anleitung macht während Überprüfen des ausgewählten Unterausdrucksergebnisses aus dem Formeleditor, um zu verstehen, was er tut, da er ziemlich chaotisch ist:
