计算SAS中不同字段的数量

Counting number of different fields in SAS

我在 SAS 中有一个 table(使用 WPS Workbench),看起来像这样。

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

我想将 table 总结如下:对于每个 Band,我想要计算 Y 和 N 值的数量,并 table 转置(可选)。

因此,左下方将由每个波段组成,顶部将是 Y 计数和 N 计数。或者乐队可以越过顶部我不介意。

数组处理是获取汇总计数的(几种)方法之一。

data have;
  do id = 1 to 200;
    array band(160) ;
    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;

相同的 'want' 数据可以通过使用

的其他技术获得
  • 哈希对象
  • 转置/报告
  • 转置/制表
  • 转置/频率