2017-10-19 13 views
0

私はこのように見える(WPS Workbenchを使用して)SASにテーブルを持っています。SASの異なるフィールドのカウント数

ID Band_1 Band_2 Band_2 ... Band_160 
1 Y  Y  N   Y 
2 N  N  N   N 
3 Y  N  N   Y 
4 N  Y  Y   Y 
.. 
200 Y  N  N   Y 

Iは次のようにテーブルを要約する:表は、転置で各バンドの、I(オプション)、YとN値の数をカウントしたいです。

左下が各バンドで構成され、上端がYカウントとNカウントになります。または、バンドはトップの上にあっても構いません。

答えて

0

配列処理は、要約カウントを取得する方法の1つです。

data have; 
    do id = 1 to 200; 
    array band(160) $1; 
    do _n_ = 1 to dim(band); 
     band(_n_) = substr('YN', 1+(ranuni(123)<0.4)); 
    end; 
    output; 
    end; 
run; 

data want1(keep=column yes_n no_n); 
    set have end=last; 
    array band(160); 
    array Yes(160) _temporary_ (160*0); 
    array No(160) _temporary_ (160*0); 

    * accumulate counts; 
    do _n_ = 1 to dim(band); 
    if band(_n_) = 'Y' then Yes(_n_)+1; else 
    if band(_n_) = 'N' then No(_n_)+1; 
    end; 

    * emit counts; 
    if last then 
    do _n_ = 1 to dim(band); 
     column = vname(band(_n_)); 
     yes_n = Yes(_n_); 
     no_n = No(_n_); 
     output; 
    end; 
run; 

同じ '欲しい' データ

  • ハッシュオブジェクト
  • トランスポーズ/レポート
  • トランスポーズ/集計
  • トランスポーズ/のFreq
を使用する他の技術から得ることができます