【SAS】オブザベーション数をカウントする【SQLプロシジャは使用しない】
データセットのオブザベーション(行数)をカウントするやり方
- テストデータを作成
*変数category、valueを持つデータセット「test」を作成; DATA test; INPUT category value; CARDS; 2 257 1 172 3 169 3 208 2 408 2 400 1 315 1 156 3 30 1 262 1 484 3 297 ; RUN;
- ↓データセット「test」の中身。オブザベーション数は12
- オブザベーション数をカウント
DATA count(KEEP=cnt);/*KEEP=により、変数cntのみをデータセットに保持*/ *データセット「test」を読み込み; SET test END=last; /*END=により、最後のオブザベーションを読み込んだ時の動作を設定できる*/ *RETAINステートメントにより、前のオブザベーションの変数cntの値を保持する; RETAIN cnt 0; *1オブザベーション読み込むごとにcntに+1; cnt+1; *最後のオブザベーションだけデータセット「count」に出力; IF last; RUN;
変数categoryの値ごとにオブザベーション数をカウントしたい場合
*見やすくするため、SORTプロシジャを使ってcategoryでソート; PROC SORT DATA=test; BY category; RUN;
- categoryごとにオブザベーション数をカウント
DATA count(KEEP=cnt1 cnt2 cnt3); SET test END=last; RETAIN cnt1 0 cnt2 0 cnt3 0; *categoryが1のときcnt1に+1; IF category=1 THEN cnt1+1; *categoryが2のときcnt2に+1; ELSE IF category=2 THEN cnt2+1; *categoryが3のときcnt3に+1; ELSE IF category=3 THEN cnt3+1; IF last; RUN;
- 変数cnt1、cnt2、cnt3にそれぞれcategory1、2、3のオブザベーション数を持つ