①SASでデータサイエンス100本ノック(構造化データ加工編)

データサイエンティスト協会から2020年6月15日からGitHubで公開してるデータサイエンス100本ノック(構造化データ加工編)ですが

その100本をSASで書いたので,私のブログでレビューしてくださいという,非常に面白い連絡を某Mさんからいただきました

なので,気の向くままに適当にとりあげれればと

005:

【行に対する操作 / 複数条件 / 複数条件に合致する行を抽出する】

レシート明細のテーブル(df_receipt)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の条件を満たすデータを抽出せよ。

顧客ID(customer_id)が"CS018205000001"

売上金額(amount)が1,000以上

/*Mさま*/

data s005; format sales_ymd customer_id product_cd amount ; keep sales_ymd customer_id product_cd amount ; set df_receipt; where customer_id = 'CS018205000001' & 1000 <= amount; run; proc print data = s005; run;

好みの問題で
私は割と
&(and)でwhere抽出条件をつなぐのが好きではなく

where customer_id = 'CS018205000001'; where same 1000 <= amount; としかかかないかなぁ.コメントアウトして条件絞りを変えやすいし

007問題の

  • 顧客ID(customer_id)が"CS018205000001"
  • 売上金額(amount)が1,000以上2,000以下
where customer_id = 'CS018205000001' & amount between 1000 and 2000;

整数値が前提なら amout in (1000:2000);の方が書きがちですが正しいのはbetweenの気がします

013問題の
顧客テーブル(df_customer)から、ステータスコード(status_cd)の先頭がアルファベットのA~Fで始まるデータを全項目抽出し、10件だけ表示せよ。
where substr(status_cd , 1 , 1) between 'A' and 'F';

↓
where first(status_cd , 1) between 'A' and 'F';

first関数とchark関数が好きで,substrの第三引数が1になるようなケースで私はsubstr使わないかなぁ

末尾ならreverseしてからfirstするかcharで第二引数にlengthいれるかなぁ

とりあえず,ここまで

0 件のコメント:

コメントを投稿