亦余心之所善兮,虽九死其犹未悔!
好久没有更新文章了,上一次更新还是2015年10月25日,到现在已经15个月了。坦白来讲,其实当时是计划按月来更新SAS编程的一些心得和体会的。鉴于当时我的SAS水平还是属于闭门造车的境界,且对于SAS语言的理解其实是不够深刻的,更多的则是对自己的不满意,所以这个计划也一度中止。
事隔一年,期间在各式各样的SAS代码中也遇到了各种各样的实际问题,对于SAS的理解相比与一年前也熟悉了不少。16年春节回家,思考和反省了这一年多的自己,觉得有必要将一年前的计划重新做起来,虽然晚了一年,还是相信好事多磨。
我的心依然像《楚辞》里边这句话一样“亦余心之所善兮,虽九死其犹未悔!”。
好了,闲话就不多说了。今天计划分享一些SAS编程中“获取数据集观测值个数并且将获取的个数创建为一个宏变量”的各种方法:包括data步,proc步等等。
一、使用data步nobs选项。
程序:
data _null_;
set a nobs=nobs; /*用nobs选项*/
call symput("nobs",nobs); /*data步中创建宏变量*/
stop;
run;
%put &nobs.; /*输出宏变量&nobs.*/
二、使用proc sql语句
proc sql noprint;
select count(*) into:n_num
from a
;
quit;
%put &n_num.;
三、data步使用open函数、attrn函数
data _null_;
dsid=open("a");
nobs=attrn(dsid,"nobs");
rc=close(dsid);
call symput("nobs",nobs);
run;
%put &nobs.;
四、使用数据字典方法
proc sql;
select nobs into:nobs
from dictionary.tables
where libname="WORK" and memname="A" /*注意此处双引号内内容必须要大写*/
;
quit;
%put &nobs.;
虽然是小技巧,但是有很多不同的实现方法哦!而且每个方法实现的原理都不一样,且涉及到不一样的SAS运行机制,所以运行的效率也不一样。了解程序的内部运行机制对于以后处理大数据量数据时的sas程序的编写也会有很大效率差异哦!!!
祝大家新年快乐!!祝自己新年快乐!!