2017-10-19 15 views
0

J'ai une table dans SAS (utilisant WPS Workbench) qui ressemble à ceci.Comptage du nombre de champs différents dans 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 

Je veux résumer le tableau comme suit: Pour chaque bande, je veux un compte du nombre de valeurs Y et N, avec la table transposée (en option).

Donc, en bas à gauche se composera de chaque bande, et à travers le haut sera un compte Y et un nombre de N. Ou les groupes peuvent être en haut, ça ne me dérange pas.

Répondre

0

Le traitement de tableau est l'une des façons d'obtenir vos comptes récapitulatifs.

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; 

Le même 'veulent' Les données peuvent être obtenues à partir d'autres techniques qui utilisent

  • objet Hash
  • Transposer/Rapport
  • Transposer/Tabulate
  • Transposer/Freq