我有大约1,000,000行和25列数据,我正在尝试返回列名列表,不同值的数量以及是否存在缺失值。
我无法直接在PROC SQL中的列名中进行编码并计算不同,因为我有许多具有不同列名的数据集,并且我试图使用一段代码自动为所有表返回所需的结果。 / p>
我已尝试运行以下代码
proc freq nlevels data= &DATASET_NAME;
ods output nlevels=nlevels ;
tables _all_ NOPRINT;
run;
这会返回内存不足错误。是否有另一种方法来实现结果,避免内存不足错误。
答案 0 :(得分:0)
没有必要通过 table _all _ 输入列名,但是它可能通过同时输入所有列来使内存不足,尝试将列分隔成proc freq然后组合结果:
proc sql;
create table name as
select name from dictionary.columns where libname='SASHELP' and memname='CLASS';
quit;
data want;
run;
data _null_;
set name;
call execute(
'proc freq data=class nlevels;
table '||name||';
ods output nlevels=nlevels;
run;
data want;
set want nlevels;
run;'
);
run;
答案 1 :(得分:0)
此问题与SAS summary statistic from a dataset
非常相似答案涵盖了
的技巧