我有一些數據,我想計算從一行到下一行的滯後(這是時間序列),但我有許多組的數據。我希望在每個組中分別創建滯後。對於許多統計函數(例如,Col Mean),可以選擇新增一個或多個按組變數。Lag 或 Dif 函數似乎沒有相同的功能,而且我在腳本文件中找不到任何內容來指示如何完成此操作。有沒有一種方法可以輕鬆地分別計算每個組的滯後?我目前找到的唯一方法是首先按日期和按組對資料進行排序,然後使用取決於組等於滯後(組)的IF公式,例如IF(組)-滯後(組),然後滯後(感興趣的列),否則缺失。
我可能猜到 txnelson 會有解決方案!它並不比我所擁有的更優雅或更簡單,但它避免了對資料進行排序的需要 - 這使得它更加靈活。謝謝。
即使行未按 2 個級別排序,以下公式似乎也有效。 (即按日期排序)公式中的 lagList 是用來處理 Col Moving Average() 函數傳回目前行的問題,即使是第一次出現也是如此。
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 )
);

這是一個低效率的公式,但也有效
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)
)
)]
);
為了讓這一點更加具體,我附上了一個簡單的例子。滯後的死亡專欄是我想要的 - 但我希望能夠更簡單或更優雅地做到這一點。