見出し画像

SASのいろいろ4

分析屋のH.Wです。
今回はSASを使った頻度集計をやっていきます。

①このデータセットを使用します。

data wk1;
input group id $ flg $;
cards;
1 001 Y
1 002 Y
1 003 N
1 004 N
2 005 Y
2 006 N
2 007 Y
2 008 N
2 009 Y
;
run;


②freqを使用します。

proc freq data=wk1 noprint;
  tables flg / out=frq1(drop=PERCENT);
run;

COUNTにYNの数が入ります。

③freqにbyを入れてを使用します。

proc freq data=wk1 noprint;
  tables flg / out=frq1(drop=PERCENT);
  by group;
run;

COUNTにgroupごとのYNの数が入ります。(byに入れる変数は増やせます)

④クロス集計

こちらのやり方でも③と同じ結果になります。

proc freq data=wk1 noprint;
  tables group*flg / out=frq1(drop=PERCENT);
run;

byを使用せずにtablesの後に「変数*変数」で実行できます。

⑤freqで出力したデータセットを転置する。

よく集計表で使用しますが、transposeを使用することで表の形を変えることができます。

proc sort data=frq1; by flg; run;
proc transpose data=frq1 out=trn1 prefix=C;
  id group;
  by flg;
  var COUNT;
run;

prefixとidを合わせた変数名で作成されます。

⑥全体の人数をマクロ変数にする。

data _null_;
  set wk1(where=(group=1))  end = aaa;
  if aaa then call symputx("obs1", _N_);
run;

data _null_;
  set wk1(where=(group=2))  end = bbb;
  if bbb then call symputx("obs2", _N_);
run;

このようにマクロ変数をデータセットにすることもできます。

data denom;
  C1 = &obs1;
  C2 = &obs2;
run;

⑦データセットを縦に結合する。

先ほど、transposeで作成したデータセットを結合する。

data wk2;
  set denom trn1;
run;

同じ変数名で結合される

freqの簡単な使い方をやってみました。
他にも色々できることがあるので、freqはかなり便利です。


これまでのシリーズはこちら

株式会社分析屋について

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。