SAS中如何获取数据集的记录数
How to obtain the number of records of a dataset in SAS
我想统计SAS
中dataset
的记录数。有一个功能可以简单地制作这个东西吗?我使用 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" 开头的所有数据集的大小。
我想统计SAS
中dataset
的记录数。有一个功能可以简单地制作这个东西吗?我使用 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" 开头的所有数据集的大小。