351 Views
April 03, 24
スライド概要
[大阪sas勉強会] 内橋 謙太
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
SAS Advanced QUIZ Kenta Uchiahshi Biometrics Group CAC Croit Corporation
Agenda ◆Profile ◆Question 1 ◆Question 2 ◆Question 3 ◆Question 4 ◆Question 5 ◆Question 6 ◆Question 7 Your Integral Partner for Life Sciences. Page 2 Copyright © 2019 CAC Croit Corporation All rights reserved.
Profile ◆ 内橋 謙太 ◆ SAS歴 約4年くらい(以前は美容師をしてました。) ※ですのでPCスキルはあまり高くないです ◆ 出身 ⚫兵庫県西脇市 ◆ 現在までの仕事内容(2016年2月~) ⚫CDISC・統計解析業務 ◆ 最近勉強したこと SAS® 認定プロフェッショナル Advanced Programmer for SAS®9 を少し勉強したので次ページにクイズをしましたのでそれを発表したいと思います。 Your Integral Partner for Life Sciences. Page 3 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 1 ◆ 以下のプログラムをサブミットした出力結果は、1~4のどれになるでしょうか。 %let test=apple; %macro AAA(test=pen); %let test=apple_pen; %mend AAA; %AAA(test=dream); %put I have a &test.; 1. 2. 3. 4. I have a pen I have a apple I have a apple_pen I have a dream Your Integral Partner for Life Sciences. Page 4 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 1 -Answer - ◆ 答えは、2です。 グローバルとローカルマクロ変数のスコープに関しては、範囲対象でした。 Your Integral Partner for Life Sciences. Page 5 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 2 ◆ 以下のPGMの実行結果として正しいのはどれでしょうか? NAMESデータセット CDSデータセット 【実行PGM】 data NAME_LIST; set NAMES;set CDS; run; ① ② Your Integral Partner for Life Sciences. ③ Page 6 ④ Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 2 -Answer - ◆ 答えは、1です。 後から読み込まれたDatasetsの情報でid変数が上書きされるため 以下の結果となります。 Your Integral Partner for Life Sciences. Page 7 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 3 ◆ 以下のPGMの実行結果として正しいのはどれでしょうか? NAMESデータセット CDSデータセット 【実行PGM】 data NAME_LIST; if _n_ = 5 then set NAMES; set CDS; run; ① ② Your Integral Partner for Life Sciences. ③ Page 8 ④ Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 3 -Answer - ◆ 答えは、3です。 CDSデータセットの5オブザベーション目に、 NAMESデータセットの1オブザベーション を読み込むため以下の結果となります。 Your Integral Partner for Life Sciences. Page 9 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 4 ◆ 以下のPGMを実行したときの結果はどれでしょうか? data _null_; array pgm_name{3,2}_temporary_ (100-10,.10,100,200,3); score = pgm_name{2,1}; put score; run; ① -10 ②0.1 Your Integral Partner for Life Sciences. ③エラー Page 10 ④200 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 4 -Answer - ◆ 答えは、2です。 「 100-10 」は、(1,1)に100 (2,1)に-10が格納されエラーは発生せず2-1には 0.1(.10)が格納されるため以下の結果となります。 Your Integral Partner for Life Sciences. Page 11 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 5 ◆ 以下のPGMを実行したときの結果はどれでしょうか? %let DIO=Josef; %let Jobarna=DIO; %let Risarisa=Jobarna; %put &&&Jobarna; ① Josef Your Integral Partner for Life Sciences. ②DIO ③Jobarna Page 12 ④Risarisa Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 5 -Answer - ◆ 答えは、1です。 &&&Jobarna ⇒ &&DIO ⇒ &DIO と読み込まれ以下の結果となります。 Your Integral Partner for Life Sciences. Page 13 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 6 ◆ 以下のPGMを実行しました。オプションを指定する意味として 正しいのはどれでしょうか。 data orders(bufsize = 6144 bufno = 4); set orders_fact; run; ①bufsize = バイト数で、各I / O転送でメモリー中に読み込こまれるデータを何ページに するかをできます。 ②bufsize = キロバイト数で、各I / O転送でメモリー中に読み込こまれるデータを何ペー ジにするかをできます。 ③ bufno = バッファ数で、各I / O転送でメモリー中に読み込こまれるデータを何ページ にするかをできます。 ④ bufno = インデックスのページ数で、各I / O転送でメモリー中に読み込こまれるデー タを何ページにするかをできます。 Your Integral Partner for Life Sciences. Page 14 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 6 -Answer - ◆ 答えは、3です。 bufnoオプションは、SASデータセットの読み書きに利用可能なバッファ数を制御するため のオプションとなります。 バッファ数を増やすことで各I/O転送でメモリ中に読み込まれるデータを何ページにするか を制御できます。 メモリ使用量の制御・データ保存領域の制御・パフォーマンスの最適化についてなども 問題として出てきます。(個人的に結構ここが難しかったです。。。。) Your Integral Partner for Life Sciences. Page 15 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 6 -Answer - 【補足】 ◆ Bufsize 1回のI/O操作で転送できるデータ量を設定できます。バッファサイズを大きくするとプ ログラムの実行時間が大幅に短縮することができます。 これはSASが目盛とディスクの間でデータの読み書きをする回数を減らすためです。 ただしメモリー消費の増加を犠牲にして行われます ◆ Bufno データセットを書き込み読み込み時にSASが割り当てるバッファ数を制御することができま す。Bufsize同様にプロセスの経過時間を減らすことができますがメモリの消費量を増加さ せることに繋がります。 【Bufsize及びBufnoオプションに関する記事】 http://sasnrd.com/sas-bufsize-bufno-options-case-study-example/ Your Integral Partner for Life Sciences. Page 16 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 7 ◆ 以下のindata を作成するPGMを実行しました。proc SQLと 同じ結果が出力されるのはどのPGMでしょうか。 TEST1 proc sql; create table indata as select TEST1.CATN, NAME1, NAME2 from TEST1,TEST2 where TEST1.CATN = TEST2.CATN; quit; ① ② ③ ④ TEST2 ※上記のPGMはすべてERROR、WARNINGは発生しません Your Integral Partner for Life Sciences. Page 17 Copyright © 2019 CAC Croit Corporation All rights reserved.
Question 7 -Answer - ◆ 答えは、4です。 多対多のマージですので1では、BY値を繰り返すことになります。 2,3はそもそもキーの指定をしていないので作成されません。 そもそも、多対多のマージはSQLですることが多いとおもうのでこのようなPGMを組む ことはないかなと思いますが、SQLがAdvancedの範囲だったのでちょっと 頭の体操的に作ってみました。 Your Integral Partner for Life Sciences. Page 18 Copyright © 2019 CAC Croit Corporation All rights reserved.