TABULATEプロシジャ


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


<表形式でoutputに出力>
/*テストデータ*/
proc format ;
  value f_sex 1 = "男"
              2 = "女";
  value noyes 0 = "NO"
              1 = "YES";
run;
 
data test;
  length sex 8. drug $10 ev_yn 8.;
  do i = 1 to  60 ; drug = "medicine" ; sex = 1 ; ev_yn = 0 ;  output; end;
  do i = 1 to  30 ; drug = "medicine" ; sex = 1 ; ev_yn = 1 ;  output; end;
  do i = 1 to  50 ; drug = "medicine" ; sex = 2 ; ev_yn = 0 ;  output; end;
  do i = 1 to  40 ; drug = "medicine" ; sex = 2 ; ev_yn = 1 ;  output; end;
  do i = 1 to  70 ; drug = "plasebo"  ; sex = 1 ; ev_yn = 0 ;  output; end;
  do i = 1 to  80 ; drug = "plasebo"  ; sex = 1 ; ev_yn = 1 ;  output; end;
  do i = 1 to  20 ; drug = "plasebo"  ; sex = 2 ; ev_yn = 0 ;  output; end;
  do i = 1 to  50 ; drug = "plasebo"  ; sex = 2 ; ev_yn = 1 ;  output; end;
run;

<性別、薬剤別のイベント合計度数とパーセント>

proc tabulate data =test out= a ;
  class sex drug ev_yn ;
  table sex * drug , (ev_yn*( n pctn<ev_yn> ) all pctn<drug> ) ; /*パーセントの分母を<>の中にかく*/
  format sex f_sex. ev_yn noyes. ;
run;

<性別、イベント別の薬剤の合計度数とパーセント>

proc tabulate data =test out= b ;
  class sex drug ev_yn ;
  table sex * drug , (ev_yn*( n pctn<drug> ) all );
  format sex f_sex. ev_yn noyes. ;
run;

<薬剤、イベント別の性別の合計度数とパーセント>

proc tabulate data =test out= c ;
  class sex drug ev_yn ;
  table drug * ev_yn ,( sex*( n pctn<sex> ) all );
  format sex f_sex. ev_yn noyes. ;
run;

<meanとSTDにゼロを代入>

proc tabulate data = burger out = d F=comma7.;
  var kingaku ;
  class sex order ; /*横×縦*/
  table order , sex * kingaku *(N mean std) /rts=30 /* meanとSTDにゼロがが代入された*/;
  classlev sex;
run;

<TABULATEプロシジャの出力で、欠損値を「0」と表示する方法>

proc tabulate data=sashelp.class; 
  class age sex; 
  tables age, sex / MISSTEXT='0';       /* MISSTEXTオプション */
run;

<統計量を横に出力>

proc tabulate data = burger(where=(order in ("てりやきバーガー","アイスコーヒー","グリーンサラダ")))
                out  = d F=comma7.;
  var kingaku ;
  class sex order ; /*横×縦*/
  table order , sex * kingaku *(N mean*f=8.2 std*f=8.2) /rts=30 /*nが1or欠損のとき、"."が出力された*/;
  classlev sex;
run;

<統計量を縦に出力>

proc tabulate data = burger(where=(order in ("てりやきバーガー","アイスコーヒー","グリーンサラダ")))
                out  = d F=comma20.;/*f=の指定は横ラベルに反映される*/
  var kingaku ;
  class sex order ; /*横×縦*/
  table sex * kingaku *(N mean*f=8.2 std*f=8.2), order /rts=30 /*nが1or欠損のとき、"."が出力された*/;
  classlev sex;
run;



ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。