こんにちは、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を実行する方法について詳しく知りたい方はこちらの記事をご覧ください。
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による予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら