Sas で lag 機能を使用する方法 (例あり)


SAS のLAG関数を使用して、変数のシフトされた値を取得できます。

この関数は次の基本構文を使用します。

 lag1_value = lag (value);

デフォルトでは、 lag は変数の前の値を検索します。

ただし、 lag2lag3lagnなどは使用できます。 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; 

SASシフト機能の例

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; 

グループごとの SAS オフセット

lag1_sales列の値には、各店舗の 1 日遅れの売上値が表示されます。

この行の 1 日のラグ値は別の店舗の売上値を表すため、行 7 のlag1_salesの値は空であることに注意してください。

追加リソース

次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。

SAS でデータを正規化する方法
SAS で重複を削除する方法
SAS で欠損値をゼロに置き換える方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です