7月 10, 2011

Posted in | 3 条评论

使用%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

Posted in 数据处理 | 5 条评论

利用SAS系统数据视图进行批量操作

一些实际问题中,我们需要对某些数据集、某些变量等进行批量的操作和处理。对其中的某些问题,利用逻辑库sashelp下的一些系统数据视图(sashelp.vcolumn、sashelp.vmember、sashelp.vindex、sashelp.vtable等)可以较为方便的处理。

本文利用SAS系统数据视图进行批量操作进行简单的说明。

1.利用sashelp.vcolumn数据视图

ashelp.vcolumn中包含了所有的逻辑库名、数据集名、变量名等等,如下图:

这里,网友问,对某些数据集data1…datan进行set连接,需要处理不同数据集中相同变量的字符长度不同的问题。

继续阅读
返回顶部