SAS 汇总SQL查询宏变量的值(Sum Values Stored in Macro Variables )

来源:互联网 发布:网络电影《罪》在哪看 编辑:程序博客网 时间:2024/05/16 09:52

【目的】

(1)通过SQL将要查询的多个结果保存到多个宏变量里面;

(2)通过MACRO将多个宏变量的值汇总到一个变量里面用于进一步分析。

【程序】

 

*创建一个样例数据库temp;data temp;do i=1 to 10;output;end;run;%macro matrix();proc sql ;select  i into :x1 - :x10 from temp;*将i的值传递给变量x1-x10.以下的程序实现如何在宏中汇总x1-x10; *%put &x1;quit;%let sm=0;%do i=1 %to 10;%let sm=&sm+&&x&i;*这里的sm是一串字符串相当于0+1+2+3+4...+10; %end;%let result=%eval(&sm);*%eval执行上面那串字符串的值,并赋给result变量。这个也就是SAS MACRO的基本逻辑,先翻译成可计算的语句,再执行;%put &result;%mend;%matrix();


 


还有两种办法实现,一种是使用sql create table,然后insert记录,再用proc mean统计,效率太低;另一种是使用数组,将x1-x10的值赋给数组变量,再求和。好像都很麻烦,我居然没有发现数组行求和或者列求和的函数;从这个角度发现还是R 的向量运算的效率比较高。

这个问题在goolge baidu上面检索了一整天,看了一堆的英文资料,居然没有发现很好的答案,有一篇资料是说用%sysfunc(sum())的方法,但没有人提出最终解决方案。于是整理提交我的方法方便其他同志查询。

 思考:如果要考虑计算平均数;如果考虑到缺失值;是否可以考虑用户自定义函数(SAS提供的新功能)

0 0
原创粉丝点击