7月 10, 2011
使用%nowpath宏获取当前SAS路径
前几天学习了一个叫mypath的宏,其实现了将当前sas程序的路径定义为一个宏变量、以方便后续调用路径的功能。查了下相关资料,在《Generating Program-Stamped Output in an Interactive SAS Session》中,也有个叫fullpath的宏,是提取当前路径为宏变量后进行应用。
个人觉得这2个实现路径提取功能的宏及其中的编程技巧挺有用的,拿出来分享一下。
1.%nowpath
1.1
将%mypath和%fullpath作了小小改动、整合成了下面的宏%nowpath
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | %macro nowpath; %global fullpath nowpath; /*定义为global,为后续调用准备*/ proc sql noprint; select xpath into : fullpath /*选取全路径*/ from dictionary.extfiles /*dictionary.extfiles包含SAS路径信息*/ where substr(fileref,4) eq ( select max(substr(fileref,4)) /*max()保证选取最新(当前)路劲*/ from dictionary.extfiles where substr(fileref,1,1) eq "#" and index(xpath,".sas") gt 0 ); quit; /*选取当前路径*/ %let nowpath=%substr(&fullpath,1,%eval(%length(&fullpath)-%length(%scan(&fullpath,-1,\)))); %put The Full Path is: &fullpath; %put The Now Path is: &nowpath; %mend nowpath; |
2月 20, 2011
利用SAS系统数据视图进行批量操作
一些实际问题中,我们需要对某些数据集、某些变量等进行批量的操作和处理。对其中的某些问题,利用逻辑库sashelp下的一些系统数据视图(sashelp.vcolumn、sashelp.vmember、sashelp.vindex、sashelp.vtable等)可以较为方便的处理。
本文利用SAS系统数据视图进行批量操作进行简单的说明。
1.利用sashelp.vcolumn数据视图
ashelp.vcolumn中包含了所有的逻辑库名、数据集名、变量名等等,如下图:
如这里,网友问,对某些数据集data1…datan进行set连接,需要处理不同数据集中相同变量的字符长度不同的问题。
继续阅读