【问题标题】:Counting number of different fields in SAS计算SAS中不同字段的数量
【发布时间】:2017-10-19 09:03:48
【问题描述】:

我在 SAS(使用 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

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

因此,左下方将包含每个波段,而顶部将是 Y 计数和 N 计数。或者乐队可以跨越顶部,我不介意。

【问题讨论】:

    标签: sas summary


    【解决方案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;
    

    同样的“想要”数据可以从其他使用的技术中获得

    • 哈希对象
    • 转置/报告
    • 转置/制表
    • 转置/频率

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 2020-05-19
      • 2015-06-17
      • 1970-01-01
      • 2021-12-29
      • 2022-01-21
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      相关资源
      最近更新 更多