2019年9月11日水曜日

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




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


「STYLE=オプション」の詳細は過去記事をご覧ください。
https://sas-boubi.blogspot.com/2016/02/report8.html



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

proc report data=sashelp.class   style( header ) = [ background=blue color=white ];
    column sex name age height weight;
    define   sex / order;
    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周年記念講演と合同開催で、いつもより豪華でした。






わたしは以下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ステートメント」でリストに対し、、

  • 複数の段落を出力できる
  • 入れ子構造を作れる





1. リスト内に、複数の段落を出力する


構文
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出力先に「テキストを出力するプロシジャ」です。



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





1. テキスト出力



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

  • テキストを出力します
  • 1つのPステートメントで、1つの段落を作ることが出来る




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. 基本構文
2.


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;




解説


月初を求める

    firstday = intnx( 'month', x, 0, 'beginning');

日付値が格納された「変数x」に対して、その月の開始を返すように設定しています。




月末を求める

    lastday = intnx( 'month', x, 0, 'end');    

日付値が格納された「変数x」に対して、その月の終了を返すように設定しています。