【SAS言語】SQL CASE式を用いた条件付きデータ項目の作成方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SASプログラムの開発環境でSQLを実行する方法が知りたい。
  • SQLのCASE式の利用方法を理解し、特定条件を満たすデータ項目を作成したい。
目次

【SAS実践】SQL CASE式を用いたデータ項目作成

SAS環境において、SQLおよびCASE式の記述方法を解説します。その上でCASE条件を指定した新規データ項目を作成方法も解説します。

後続では、以下に示すtest_dbというサンプルデータセットを用いてSASプログラムを実行します。SASプログラムの先頭に以下のコードを貼り付けましょう。

コード

/* 
================================================
SQLサンプルデータを準備 
================================================
*/

data test_db;
input id$ product$ price store$ date date9.;
datalines;
1000 apple 100 TOKYO 4Mar1985
1001 orange 250 TOKYO 4Mar1985
1002 lemon 300 OSAKA 4Mar1985
1003 grape 400 OSAKA 4Mar1985
;
run;

出力イメージ

id	   product	price	store	date	     date
1000	 apple	  100	TOKYO	9194	04MAR1985
1001	orange	  250	TOKYO	9194	04MAR1985
1002	 lemon	  300	OSAKA	9194	04MAR1985
1003	 grape	  400	OSAKA	9194	04MAR1985

【参考】SASとSQLを用いたデータ参照入門

SAS環境でSQLを実行する方法について詳しく知りたい方はこちらの記事をご覧ください。

あわせて読みたい
【SAS言語】SQLのSELECT文によるデータ参照・集計方法 SASプログラム内にSQLのSELECT文を記述し、データ参照・集計する方法について解説します。

CASE式|文字列一致条件を用いたカラム作成

文字列の一致条件に基づき、新規カラムを作成したい場合、次のように記述できます。

コード

以下のコードはproductからカテゴリ別に値を定義し、新規カラムselling_periodとして作成した例を示しています。

PROC SQL;
SELECT *, 
CASE product
	 when "apple"  then "5day"
	 when "orange" then "4day"
	 when "lemon"  then "1day"
	 else "10day"
	 end as selling_period
FROM test_db;
QUIT;

出力イメージ

id	   product	price	store	date	selling_period
1000	apple	  100	TOKYO	9194	         5day
1001	orange	  250	TOKYO	9194             4day
1002	lemon	  300	OSAKA	9194	         1day
1003	grape	  400	OSAKA	9194	        10day

CASE式|不等号の条件分岐を用いたカラム作成

CASE式内に不等号を用いた条件を指定し、新規カラムを作成する場合、次のように記述できます。

コード

PROC SQL;
SELECT product, price, 
CASE 
	 when price >= 100 AND price < 200  then "Small"
	 when price >= 200 AND price < 300  then "medium"
	 else "big"
	 end as price_range
FROM test_db;
QUIT;

出力イメージ

product	price	price_range
apple	 100    	 Small
orange	 250    	medium
lemon	 300    	   big
grape	 400    	   big

CASE式|条件分岐を用いたデータ抽出

CASE式をWhere句に適用し、データ抽出を実施する場合、次のように記述できます。

コード

%let condition = 1;

PROC SQL;
	SELECT * FROM test_db
	WHERE
		CASE 
			WHEN &condition = 1 THEN store = "TOKYO"
			WHEN &condition = 2 THEN store = "OSAKA"
		END;
QUIT;

出力イメージ

id	    product	 price	store	date
1000	  apple	   100	TOKYO	9194
1001	 orange	   250	TOKYO	9194

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

目次