Wie kann ich eine von Gruppen angewendete Verzögerungsfunktion verwenden?Ich habe Daten, bei denen ich die Verzögerung von einer Zeile zur nächsten berechnen möchte (es handelt sich um eine Zeitreihe), aber ich habe Daten für viele Gruppen.Ich möchte, dass die Verzögerung innerhalb jeder Gruppe separat erstellt wird.Für viele statistische Funktionen (z. B. Col Mean) besteht die Möglichkeit, eine oder mehrere By-Group-Variablen hinzuzufügen.Es scheint nicht die gleiche Funktionalität für die Lag- oder Dif-Funktionen zu geben, und ich kann in der Skriptdokumentation nichts finden, was darauf hindeutet, wie das gemacht werden könnte.Gibt es eine Möglichkeit, die Verzögerungen für jede Gruppe separat zu berechnen?Die einzige Möglichkeit, die ich derzeit gefunden habe, besteht darin, die Daten zunächst nach Datum und Gruppe zu sortieren und dann eine WENN-Formel zu verwenden, die davon abhängt, dass die Gruppe der Verzögerung (Gruppe) entspricht, z. B. IF (Gruppe) - Verzögerung (Gruppe). lag (Spalte von Interesse), sonst fehlt.
Datenmischung und -bereinigungBetreff: Wie kann ich eine von Gruppen angewendete Verzögerungsfunktion verwenden?Ich hätte vermuten können, dass Txnelson eine Lösung hätte!Es ist nicht wirklich eleganter oder einfacher als das, was ich hatte, aber es vermeidet die Notwendigkeit, die Daten zu sortieren – was es wesentlich flexibler macht.Danke.
Betreff: Wie kann ich eine von Gruppen angewendete Verzögerungsfunktion verwenden?Hier ist eine Formel, die offenbar auch dann funktioniert, wenn die Zeilen nicht nach zwei Ebenen sortiert sind. (dh nach Datum sortiert) Die lagList in der Formel dient dazu, das Problem zu lösen, dass die Funktion „Col Moving Average()“ die aktuelle Zeile zurückgibt, selbst beim ersten Auftreten.
If( Row() == 1, lagList = {} );
If( Contains( lagList, :administrative_area_level_1 || :administrative_area_level_2 ),
Col Moving Average(
:deaths,
weighting = 1,
before = 1,
:administrative_area_level_1,
:administrative_area_level_2
) * 2 - :deaths,
Insert Into( lagList, :administrative_area_level_1 || :administrative_area_level_2 )
);

Hier ist eine ineffiziente Formel, die auch funktioniert
curLevel1 = :administrative_area_level_1;
curLevel2 = :administrative_area_level_2;
curRow = Row();
Try(
:deaths[Max(
Current Data Table() << get rows where(
:administrative_area_level_1 == curLevel1 & (:administrative_area_level_2 == curLevel2 & Row() < curRow)
)
)]
);
Betreff: Wie kann ich eine von Gruppen angewendete Verzögerungsfunktion verwenden?Um dies konkreter zu machen, habe ich ein einfaches Beispiel angehängt.Die Spalte „Verzögerte Todesfälle“ ist genau das, was ich möchte – aber ich würde es gerne einfacher und eleganter machen können.