投稿

8月, 2015の投稿を表示しています

数値定数、SAS日付定数、SAS時間定数、SAS日時定数の表現方法

イメージ
数値定数、SAS日付定数、SAS時間定数、SAS日時定数の色々な書き方のご紹介です。 数値定数 title "数値定数" ; data TEST_NUM ; N = 1234 ; output ; N = -123 ; output ; N = +123 ; output ; N = 0010 ; output ; N = 0.123 ; output ; N = 1E10 ; output ; /* 指数表記 : 1 × 10の10乗 = 10000000000 */ N = 2.1E2 ; output ; /* 指数表記 : 2.1 × 10の 2乗 = 210 */ N = 1E-3 ; output ; /* 指数表記 : 2.1 × 10の-3乗 = 0.001 */ N = 2.5E-2 ; output ; /* 指数表記 : 2.5 × 10の-2乗 = 0.025 */ N = 0x ; output ; /* 16進数 : 10進数 0 */ N = 010x ; output ; /* 16進数 : 10進数 16 */ N = 0FFx ; output ; /* 16進数 : 10進数 255 */ N = 0FFFFx ; output ; /* 16進数 : 10進数 65535 */ N = . ; output ; /* 欠損値 */ N = .A ; output ; /* 特殊欠損値 A */ N = ._ ; output ; /* 特殊欠損値 _ */ run ; proc print data=TEST_NUM ; format N comma22.4 ; run ; SAS日付定数 title "SAS日付定数" ; data TEST_DATE ; DATE = '01JAN2015'd ; output ; /* 2015/01/01 */ DATE = '31AUG2015'd

proc report 指定行(◯行目)を強調する - SAS

イメージ
proc report で指定した行(◯行目)だけを強調表現する方法です。 /* テストデータ */ data TEST ; do I=1 to 10 ; R = ranuni(int(datetime())) ; output ; end ; run ; ods rtf file="/folders/myfolders/test.rtf" ; proc report data=TEST nowd ; column I R ; define I / display ; define R / display format=12.9 ; compute I ; COUNT + 1 ; /* 5行目だけに適用 */ if COUNT = 5 then do ; call define(_ROW_, 'style', 'style=[Color=red BackgroundColor=Yellow]') ; end ; endcomp ; run ; ods rtf close ; compute内にて、変数 COUNT を用いて、行番号をカウントしています。if COUNT = 5 then で 5行目だけに、call define が実行されるようにします。call define では 文字色を赤、背景色を黄色にするように設定しています。 RTF の出力結果を確認すると、5行目だけちゃんと強調されています。 せっかくなので、もっと強調してみる style=[~] と、四角括弧の中に設定するスタイルを記載します。文字色、背景色の設定だけでなく、文字のスタイル、フォント、罫線のスタイルや色なども設定できます。 強調したい行をより強調表現してみましょう。 ods rtf file="/folders/myfolders/test.rtf" ; proc report data=TEST nowd style(header)=[Fontfamily='Couriel' FontWeight=bold FontSize=3 Backgrou

NOTE: MERGEステートメントにBY値を繰り返すデータセットが複数あります。~SASログ入門 #3~

イメージ
データセットとデータセットの結合に使う みんな大好き mergeステートメントですが、n対n (多対多)の結合を行うことができません。正確には、n対n の結合をしようとすると、結合はできるのですが、SQLでの n対n の結合のように結合してくれません。 そんな、mergeステートメントで、n対n の結合をしてしまったとき、出てくるNOTEメッセージ「NOTE: MERGEステートメントにBY値を繰り返すデータセットが複数あります。」のご紹介です。 下記は、n対1 の結合をしようとして、間違えて n対n の結合をしてしまったサンプルコードです。 /* 顧客データ */ data CLIENT_MASTER ; infile cards dlm="," ; input LATEST_FLG CHANGED_DATE : date8. CLIENT_NO CLIENT_NAME : $20. BIRTH_DATE : date8. EMAIL_ADDRESS : $100. ; format CHANGED_DATE yymmddn8. BIRTH_DATE yymmddn8. ; cards ; 1,10DEC2015,001,JOHN,01JAN1980,TEST@TEST.com 0,12JUL2010,001,JOHN,01SEP1980,TEST@TEST.com 1,10DEC2015,002,Emily,01JAN1980,TESUTO@test.com 0,10DEC2015,002,Emily,01JAN1980, 0,10DEC2015,002,Emily,01JAN1981, 1,10DEC2014,003,Ann,12OCT1990,test@test.co.jp run ; /* 取引データ */ data TRANSACTION_PROCESS ; infile cards dlm="," ; input PROCESS_DT : datetime18. CLIENT_NO PRODUC

環境によっては ls, ps の値を変えてしまうオプションがある・・・らしいので注意 - SAS

SAS 雲丹では変わらなかったのですが、下記のオプションを変更すると、ls, ps の値が変わってしまうようです。環境によっては起きないみたいです。 PAPERSIZE ORIENTATION TOPMARGIN BOTTOMMARGIN LEFTMARGIN RIGHTMARGIN 日本語オンラインヘルプには下記のように記載があります。 このオプションの値を変更すると、移植可能な LINESIZE=および PAGESIZE=システムオプションの値が変更される場合があります。 SAS 9.4 システムオプション:リファレンス 第3版(PDF) 自分の使っている環境が、これらのオプションを使用したとき、または proc optload を使用したとき、ps, ls の値が変わる環境なのかどうか、気をつけてみてください。 変わってしまう環境の場合は、ps, ls のオプションを再設定するように心掛けたり、上記のオプションたちを使わないようにするといったことが必要かもしれません。 参考サイト ODS出力時の用紙サイズや余白などを設定するオプション [まとめ] | SAS忘備録