SAS Base Programmer 練習問題14
次のSASプログラムをサブミットしたときにRESULTデータセットに格納される変数について正しい記述はどれか
data result; dd = '01JAN60'd; year1 = year(dd); month1 = month(dd); day1 = day(dd); run;
A. year1, month1, day1はいずれも文字列データである。
B. month1は文字列データ、year1, day1は数値データである。
C. year1, day1は文字列データ、month1は数値データである。
D. year1, month1, day1はいずれも数値データである。
答え: D (要反転)
関数year(), month(), day()の返却値はいずれも数値データである。
RESULTデータセットには以下のような値が入っている。
dd | year1 | month1 | day1 |
---|---|---|---|
0 | 1960 | 1 | 1 |
SAS Base Programmer 練習問題13
次のSASプログラムをサブミットしたとき、WORK.RETAILの変数totalの値はどれになるか
data work.retail; cost = '$20,000'; total = .10 * cost; run;
A. 2000
B. ‘2000’
C. . (数値データの欠損値)
D. ‘ ‘(文字データの欠損値)
答え: C (要反転)
SAS Base Programmer 練習問題11の類似問題。$表現やカンマ区切り表現の場合は暗黙の変換が行われないためエラーとなる。乗算結果として数値データの欠損値が返される。正しく演算を行うにはinput関数を使用して明示的に数値データに変換する必要がある。
data work.retail; cost = input('$20,000', dollar7.); total = .10 * cost; run;
はてなブログでのSASコードのシンタックスハイライト
はてなブログではスーパーpre記法という書き方をすると
プログラムのソースコードにシンタックスハイライトを適用して表示することができる。
ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ
例えば、C言語では
>|c| #include<stdio.h> int main(int argc, char* argv[]) { printf("Hello World !\n"); /* Comment */ return 0; } ||<
と書くと
#include<stdio.h> int main(int argc, char* argv[]) { printf("Hello World !\n"); /* Comment */ return 0; }
のようにキーワードに色付けして表示される。
上記のヘルプページの対応ファイルタイプの中にSASがあった(記事執筆時点では無くなっている)ので、試してみたところ
>|sas| %put _user_; data work.test; set work.test2; msg = 'Hello World !'; /* comment */ run; proc contents data=work._all_ nods; run; ||<
のように書いて、
%put _user_; data work.test; set work.test2; msg = 'Hello World !'; /* comment */ run; proc contents data=work._all_ nods; run;
うまくハイライトできていないみたい。
サポートにお問い合わせしたところ、対応困難とのこと。
SASのコードを掲載する人なんてめったにいないので仕方ないのか。
マルチバイト文字を含む文字列の文字数カウント
日本語を含む文字列に対してlength関数を使用すると、日本語文字が2文字分としてカウントされる。
data temp; input text $32.; infile datalines truncover; text_len = length(text); datalines; ABCDE あいうえお あ い う あ い う え お あいうabcかきく ; run;
text | text_len |
---|---|
ABCDE | 5 |
あいうえお | 10 |
あ い う | 10 |
あ い う え お | 14 |
あいうabcかきく | 15 |
日本語を含む文字列の場合、2バイト文字に対応したklength関数を使う
data temp; input text $32.; infile datalines truncover; text_len = klength(text); datalines; ABCDE あいうえお あ い う あ い う え お あいうabcかきく ; run;
text | text_len |
---|---|
ABCDE | 5 |
あいうえお | 5 |
あ い う | 5 |
あ い う え お | 9 |
あいうabcかきく | 9 |
row, columnの覚え方
行列の行と列そしてrowとcolumn、どっちが縦でどっちが横か。
行と列の覚え方は
Excelの「行」と「列」を混同せずに覚えるコツが話題に - NAVER まとめ
などにまとめられているが、rowとcolumnの覚え方に関するページがないか
探していたところ以下のページを発見したのでご紹介。
ひと目でわかる行列(Row ・ Column)の方向の覚え方 - Λlisue's blog
分かりやすいイラストをCreative Commonsライセンスで配布されていたので転載させていただきました。
おしゃれなデザインなのでPCの壁紙にもできそう。