'n' Zeilendurchschnitt einer Spalte basierend auf einer Bedingung aus einer anderen Spalte -Hallo zusammen,
Ich suche nach einem n-Zeilen-Durchschnitt (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 [Zeile == Ganzzahlige Konstante xn]. Meine Grundformel funktioniert gut. Wenn jedoch Row != Integer Constant xn gilt, werden die verbleibenden Zeilen aus einer anderen Gruppe übernommen. Was mir falsche Ergebnisse liefert.
Was ich möchte -
Bester Fall: Berechnen Sie den n-Zeilen-Durchschnitt für eine Teilmenge der Daten basierend auf Cutomer_ID und geben Sie für die letzten verbleibenden Zeilen den Durchschnittswert aus dem vorherigen Durchschnittswert ein.
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 Kunden-ID aufteilen und dann die Berechnung durchführen, aber es sind mehr als 5000 IDs und etwa 20 Spalten für den Durchschnitt erforderlich. Es scheint nicht die beste Idee zu sein!
Irgendeine Hilfe, bitte?
Danke.

Datenmischung und -bereinigungBetreff: 'n' Zeilendurchschnitt 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 im Skriptindex bzw. im Skripthandbuch, was die einzelnen Funktionen/Formeln bewirken während Überprüfen Sie das ausgewählte Unterausdrucksergebnis im Formeleditor, um zu verstehen, was es tut, da es ziemlich chaotisch ist:

Betreff: 'n' Zeilendurchschnitt 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, den Skriptleitfaden zu lesen, der in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ zu finden ist!