Sas で lag 機能を使用する方法 (例あり)
SAS のLAG関数を使用して、変数のシフトされた値を取得できます。
この関数は次の基本構文を使用します。
lag1_value = lag (value);
デフォルトでは、 lag は変数の前の値を検索します。
ただし、 lag2 、 lag3 、 lagnなどは使用できます。 2 遅延、3 遅延、n 遅延などでの値を計算します。
次の例は、lag 関数を実際に使用する方法を示しています。
例 1:特定の変数に対して計算されたシフト値
SAS に、連続した日の店舗の総売上高を示す次のデータセットがあるとします。
/*create dataset*/ data original_data; input day $sales; datalines ; 1 14 2 19 3 22 4 20 5 16 6 26 7 40 8 43 9 29 10 30 11 35 12 33 ; run ; /*view dataset*/ proc print data =my_data;
次のコードは、1 日、2 日、および 3 日遅れた売上の値を計算する方法を示しています。
/*create new dataset that shows lagged values of sales*/
data new_data;
set original_data;
lag1_sales = lag(sales);
lag2_sales = lag2(sales);
lag3_sales = lag3(sales);
run ;
/*view new dataset*/
proc print data = new_data;
3 つの新しい列 (lag1_sales、lag2_sales、lag3_sales) には、それぞれ 1 日、2 日、3 日遅れて売上が表示されます。
例2:グループごとに計算されたシフト値
SAS に、2 つの店舗による連続した日の合計売上高を示す次のデータセットがあるとします。
/*create dataset*/
data original_data;
input store $sales;
datalines ;
At 14
At 19
At 22
At 20
At 16
At 26
B40
B43
B29
B 30
B35
B 33
;
run ;
/*view dataset*/
proc print data = original_data;
次のコードを使用して、店舗ごとの 1 日遅れの売上高を計算できます。
/*create new dataset that shows lagged values of sales by store*/
data new_data;
set original_data;
by store;
lag1_sales = lag(sales);
if first.store then lag1_sales = .;
run ;
/*view new dataset*/
proc print data = new_data;
lag1_sales列の値には、各店舗の 1 日遅れの売上値が表示されます。
この行の 1 日のラグ値は別の店舗の売上値を表すため、行 7 のlag1_salesの値は空であることに注意してください。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。