【问题标题】:How to count observations in a SAS dataset using proc sql?h如何使用 proc sql 计算 SAS 数据集中的观察值?
【发布时间】:2016-07-01 08:14:32
【问题描述】:

我需要更新下面的代码来做两件事: 1) sourceh.group2 有一个名为 Type 的变量,它将数据集分为四组。我需要分别计算每个组中的观察次数。我怎样才能更新我的程序来做到这一点? 2)我想创建一个具有观察数量的新数据集。下面的程序给了我日志页面中的数字,但我想创建一个新的数据集。我该如何编程?

如果有比proc sql 更有效的方法来做这些事情,那也是非常有用的,它是一个大型数据集。

谢谢!

proc sql noprint;
   select count(*) into :nobs
   from sourceh.group2; 
quit;
%put Obs in data set: &nobs;

【问题讨论】:

    标签: sas


    【解决方案1】:

    对于您的第一个问题,您只需要创建一个具有类型、具有该类型的观察计数的表,然后按类型对其进行分组。对于你的第二个问题,你做同样的事情,但没有组(因为你只想要观察的总数):

    proc sql;
        create table count_by_type as select
            type, cap, count(*) as count
            from sourceh.group2
            group by type, cap;
    quit;
    
    proc sql;
        create table count_all as select
            count(*) as count
            from sourceh.group2;
    quit;
    

    【讨论】:

    • 谢谢!您的第一个建议效果很好,这就是我所需要的。实际上,除了 type 之外,还有另一个名为 cap 的变量(将数据集分为三个)。我想按类型和上限计算观察结果,即 3 上限 * 4 种类型 = 12 组。我如何更新您的第一个代码来做到这一点?再次感谢。
    • 我认为我的编辑解决了这个问题 - 如果没有,请告诉我。
    【解决方案2】:

    您可能想使用PROC SUMMARY。它可以让您在一次运行中按 TYPE、CAP 或两者都获得计数。

     proc summary data=have ;
       class type cap ;
       output out=counts ;
     run;
    

    变量 _TYPE_ 将让您告诉您哪些类变量对表有贡献。使用两个类变量,您将有四个 _TYPE_ 值。 00 将具有总体计数,1 将具有 CAP 级别的计数,2 ('10'b) 将具有 TYPE 级别的计数,3 ('11'b) 将具有 TYPE 和 CAP 级别的值.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2015-12-14
      相关资源
      最近更新 更多