SAS中如何获取数据集的记录数

How to obtain the number of records of a dataset in SAS

我想统计SASdataset的记录数。有一个功能可以简单地制作这个东西吗?我使用 R ed 来获取此信息,其中有 length() 函数。此外,我需要记录数来计算一些百分比,所以我需要的不是 table 中的值,而是可用于其他 data step 的值中的值。我该如何解决?

提前致谢

假设这是您创建的基本 SAS table,并且没有修改或追加,最好的方法是使用数据集中保存的元数据(尝试次数保存在一段名为 "nobs") 的元数据,而无需读取数据集本身并将其放入宏变量中。您可以通过以下方式执行此操作:

Data _null_;
 i=1;
 If i = 0 then set DATASETTOCOUNT nobs= mycount;
Call symput('mycount', mycount);
Run;

%put &mycount.;

您现在将拥有一个包含数据集中行数的宏变量,您可以使用 &mycount 在其他数据步骤中调用它。

这是另一个解决方案,使用 SAS 字典,

proc sql;
    select nobs into: num_obs
    from dictionary.tables
    where libname = "WORK" and memname = "A"
    ;
quit;

通过修改上面的代码很容易得到很多数据集的大小,

proc sql;
    create table test as
    select memname, nobs
    from dictionary.tables
    where libname = "WORK" and memname like "A%"
    ;
quit;
data _null_;
    set test;
    call symput(memname, nobs);
run;

以上代码将为您提供 temporary/work 库中名称以 "a" 开头的所有数据集的大小。