2019年9月19日木曜日

PROC ODSTEXT入門: 見出しの設定



(SAS9.4M4からの新機能です)

HTMLとか触ったことある方ならピンときやすいですが、「HEADINGステートメント」で「見出し」を設定できます。



構文
H1 "見出しにするテキスト";


  • 「H1」~「H6」で見出しレベルを設定できます。





proc odstext;
   h1 "食欲の秋";
   p "栗";
   p "柿";
   p "さつまいも";
run;



見出しって大切です。
何が大切かってのはまた今度紹介できたらと思います。




記事一覧

1. 基本構文
3. 見出しの設定


2019年9月11日水曜日

ODS EXCELでセル書式を設定する




PROC REPORTなどで使える「STYLE=オプション」で書式を設定することができますが、ODS EXCELで使うと、EXCELのセル書式を設定できてしまいます。



今回使用するPROC REPORTの「STYLE=オプション」や「COMPUTE」まわりの機能については、必要に応じて以下記事を参照下さい。




ods excel file='c:\test.xlsx';

proc report data=sashelp.class missing  style( header ) = [ background=blue color=white ];
    column sex name age height weight;
    define   sex / order order=internal;
    compute weight;
        if age.sum > 12 then do;
             call define( "age.sum", "style",  "style = [ color=red ]" );
             call define( "name"     , "style",  "style = [ background=yellow ]" );
        end;
    endcomp;
run;

ods excel close;





2019年9月8日日曜日

SASユーザー総会2019に行ってきました。





9月5、6日に国際医療福祉大学東京赤坂キャンパスで開催された、「SASユーザー総会2019」に行ってきました。

ちなみに、今年はBioS30周年記念講演と合同開催で、いつもより豪華でした。

これからBios30周年記念講演が行われる舞台を写した写真




わたしは以下2演題発表してきました。
  • 「ODS EXCEL入門」プレゼンテーション
  • 「SAS Programming Tips: #BYLINEの活用」ポスターセッション

足を運んで聞いてくださった方、どうもありがとうございます!発表楽しかった~。




あと、毎年恒例のアンケートに答えてもらえる粗品ですが、、

ラゲージスケールと書かれた箱の上に置かれた楕円形の物体を写した写真

luggage scale、荷物はかりですね。。いいセンスだ。




それと、SASでロールプレイングゲームのプログラムを作って、ポスターセッションで発表された方。。いいセンスだ。

プログラムをダウンロードして、レベルMAXになるまで楽しくプレイさせて頂きました。
新作も楽しみにしております。



2019年8月29日木曜日

「ODS HTML」は「PATH=オプション」を指定した方がいい





以下のプログラムの「file=」の部分をご自身の環境にあわせてパスを変えて実行してみてください。

ods html file="c:\mysas\test.html";

proc print data=sashelp.class;
run;

ods html close;




ちゃんと動きましたか??
なんか特定の環境でエラーになっちゃいます。たとえばSAS9.4M5のWindows環境だとエラーになります。


以下のページでも言及されてますね。
https://support.sas.com/kb/61/280.html



環境によってはレジストリの設定で、WORKのフォルダパスが「file=オプション」の先頭につくそうです。

つまり、「file="c:\mysas\test.html"」と設定したら「"WORKのフォルダパス\c:\mysas\test.html"」というパスと認識されちゃうってことですね。




解決法

「path=」にパス、「file=」にファイル名を切り分けることでうまく動きます。

ods html path="c:\mysas" file="test.html";




2019年8月20日火曜日

PROC ODSTEXT入門: リストを入れ子にする




「ITEM ~ ENDステートメント」でリストに対し、、

  • 複数の段落(Pステートメント)を出力できる
  • 入れ子構造を作れる





1. リスト内に、複数の段落(Pステートメント)を出力する


構文
ITEM;
    P "テキスト1";
    P "テキスト2";
END;




proc odstext;
   list;
     item "アイス";
     item;
        p "スイカ";
        p "スイカは野菜";
     end;
   end;
run;




2. リストを入れ子にする


構文
ITEM;
    P "項目";
    LIST;
        ITEM "入れ子にする項目1";
        ITEM "入れ子にする項目2";
        ITEM "入れ子にする項目3";
    END;
END;




proc odstext;
  list;
     item "果物";
     item;
        p "野菜";
        list;
           item "きゅうり";
           item "キャベツ";
        end;
     end;
  end;
run;




記事一覧

1. 基本構文
2. リストの入れ子

2019年8月12日月曜日

PROC ODSTEXT入門: 基本構文




Q.  PROC ODSTEXTとは?
A.「ODS HTML」や「ODS RTF」などのODS出力先に「テキストを出力するプロシジャ」です。SAS9.4から追加されました。



では、3つの基本構文を紹介していきます!





1. テキスト出力



構文
PROC ODSTEXT;
    P  "出力するテキスト":
RUN;

  • Pステートメントでテキストを出力します。複数指定可。
  • 各Pステートメントが段落として出力されます(HTMLのPタグのようなもの)






proc odstext;
    p "暑いですねー";
    p "さて、夏といえば、なにを思いうかべる?";
run;





2. テキスト出力(リスト形式)


構文
PROC ODSTEXT;
    LIST:
        ITEM "項目1";
        ITEM "項目2";
        ITEM "項目3";
    END;
RUN;

・リスト形式でテキストを出力します




proc odstext;
    list;
      item "アイス";
      item "スイカ";
      item "クーラー";
    end;
run;





3. データセットの中身を出力


構文
PROC ODSTEXT DATA=データセット;
     ~ ステートメント ~
RUN;



proc odstext data=sashelp.class;
    p "名前: " || name;

    list;
       item "性別: " || sex;
       item "身長: " || put(height,8.1);
    end;
run;




記事一覧

1. 基本構文

2019年8月5日月曜日

日付値から「月初」や「月末」の日付値を求める方法




需要ありまくりなんで書いときます!
対象変数が「日付値」と「日時値」の場合で、書き方が異なります。



日付値の場合

data test;
    x = '05feb2019'd;
 
    firstday = intnx( 'month', x, 0, 'beginning');  *月初を求める;
    lastday = intnx( 'month', x, 0, 'end');            *月末を求める;
 
    format x firstday lastday yymmdd10.;
run;

上の例では、INTNX関数で日付変数Xの月初と月末を求めています。
INTNX関数の第1引数には 'month' と指定します。



日時値の場合

data test2;
    x = '2019-02-05T10:20:30'dt;
 
    firstday = intnx( 'dtmonth', x, 0, 'beginning');  *月初を求める;
    lastday = intnx( 'dtmonth', x, 0, 'end');            *月末を求める;
 
    format x firstday lastday e8601dt.;
run;

上の例では、INTNX関数で日時変数Xの月初と月末を求めています。
INTNX関数の第1引数には 'dtmonth' と指定します。
時刻のところは、月初では0時0分0秒、月末では23時59分59秒に設定されるようです。