今まで知らなかった(使ったことのなかった)tabulateプロシジャ。
メモ置き場です。
こちらのPDFもよさげ。
http://www.sas.com/offices/asiapacific/japan/usergroups/wg/archive/001017azum.pdf
変数名:A1 A2 A3 A5 sex(全て0/1の二値変数)、 age(連続変数)
データセット名:test1
項目ごとの性別割合(横に割合を出す)
proc tabulate data=test1;
class A1 A2 A3 sex;
tables A1 A2 A3, sex*(N rowpctn);
run;
↓↓↓できるもの
sex | ||||
0 | 1 | |||
A1 | N | Percent | N | Percent |
0 | 100 | 33.3 | 200 | 66.6 |
1 | 100 | 50 | 100 | 50 |
A2 | ||||
0 | 100 | 66.6 | 50 | 33.3 |
1 | 100 | 33.3 | 200 | 66.6 |
A3 | ||||
0 | 100 | 33.3 | 200 | 66.6 |
1 | 100 | 50 | 100 | 50 |
全体も左側に挿入
proc tabulate data=test1;
class A1 A2 A3 sex;
table (A1 A2 A3), (all sex)*(N rowpctn);
run;
↓↓↓できるもの
all | sex | |||||
0 | 1 | |||||
A1 | N | Percent | N | Percent | N | Percent |
0 | 300 | 100 | 100 | 33.3 | 200 | 66.6 |
1 | 200 | 100 | 100 | 50 | 100 | 50 |
A2 | ||||||
0 | 150 | 100 | 100 | 66.6 | 50 | 33.3 |
1 | 300 | 100 | 100 | 33.3 | 200 | 66.6 |
A3 | ||||||
0 | 300 | 100 | 100 | 33.3 | 200 | 66.6 |
1 | 200 | 100 | 100 | 50 | 100 | 50 |
性別ごとに各項目の解答割合を出す(縦に割合を出す)
proc tabulate data=test1;
class A1 A2 A3 sex;
table (A1 all) (A2 all) (A3 all), (all sex)*(N colpctn);
run;
↓↓↓できるもの
all | sex | |||||
0 | 1 | |||||
A1 | N | Percent | N | Percent | N | Percent |
0 | 300 | 60.0 | 100 | 50.0 | 200 | 66.6 |
1 | 200 | 40.0 | 100 | 50 | 100 | 33.3 |
all | 500 | 100.0 | 200 | 100.0 | 300 | 100.0 |
A2 | ||||||
0 | 150 | 33.3 | 100 | 50.0 | 50 | 20.0 |
1 | 300 | 66.6 | 100 | 50.0 | 200 | 80.0 |
all | 450 | 100.0 | 200 | 100.0 | 250 | 100.0 |
A3 | ||||||
0 | 300 | 60.0 | 100 | 50.0 | 200 | 66.6 |
1 | 200 | 40.0 | 100 | 50.0 | 100 | 33.3 |
all | 500 | 100.0 | 200 | 100.0 | 300 | 100.0 |
平均値はこんな感じ
proc tabulate data=test1;
class sex;
var age;
table age, (all sex)*(n mean std);
run;
all | sex | ||||||||
0 | 1 | ||||||||
n | mean | std | n | mean | std | n | mean | std | |
age | 100 | 45.0 | 1.0 | 50 | 44.0 | 1.0 | 50 | 46.0 | 1.0 |
ちなみに、missingを入れないと、欠損値があるものは解析から除外されちゃうので、こうしないと青くなる事がわかりました・・・。
proc tabulate missing data=test1;
class A1 A2 A3 sex;
table (A1 all) (A2 all) (A3 all), (all sex)*(N colpctn);
run;
片方の性別だけ表示したいときはWhereを使う。
proc tabulate missing data=test1;
Where sex=1;
class A1 A2 A3 sex;
table (A1 all) (A2 all) (A3 all), (all sex)*(N colpctn);
run;
性別層別化したい時。
平均値を出したい変数名がA1、A2、要因別に出したい変数がa=1, 2、性別がsex=1, 2のとき
proc tabulate;
class sex a;
var A1 A2 A3;
table sex*(A1 A2), (all a)*(mean std);
run;
all | a | ||||||
1 | 2 | ||||||
mean | std | mean | std | mean | std | ||
sex | |||||||
1 | A1 | 45.0 | 1.2 | 44.0 | 1.0 | 46.0 | 1.0 |
A2 | 60.0 | 1.5 | 50 | 1.5 | 65 | 1.0 | |
2 | A1 | 45.0 | 1.2 | 44.0 | 1.0 | 46.0 | 1.0 |
A2 | 60.0 | 1.5 | 50 | 1.5 | 65 | 1.0 |