计算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' 数据可以通过使用
的其他技术获得
- 哈希对象
- 转置/报告
- 转置/制表
- 转置/频率
我在 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' 数据可以通过使用
的其他技术获得- 哈希对象
- 转置/报告
- 转置/制表
- 转置/频率