[转载]sas计算行数和列数
(2012-06-29 16:29:15)
标签:
转载 |
分类: SAS |
sas计算数据集的行数、列数(观察数、变量个数)。
计算行数(观察数):
%let
dsid=%sysfunc(open(sashelp.class,i));
%let n=%sysfunc(attrn(&dsid,nobs));
%let rc=%sysfunc(close(&dsid));
%put obsnum=&n;
计算列数:将上面程序第二行的attrn的参数 nobs换成
nvars
说明:
1、Sysfunc是SAS宏里功能最为强大的一个statement。这主要是通过它可以调用包括SAS和SCL在内的所有内置函数。
%SYSFUNC
在给宏变量赋值时,为了使用数据步中的函数(如:SUBSTR,SCAN,TRIM,LEFT等;一些数据步函数不能套用此宏函数,如:PUT,INPUT,LAG,DIF等)对值进行加工,需要用此宏函数将值扩起来。如:%SYSFUNC(数据步函数名(自变量)<,输出格式>)。例:%let currdate = %sysfunc(today(),worddate.);
注:在宏或宏语句中嵌套使用数据步函数时,必须在每个数据步函数外使用%SYSFUNC。
2、这个宏使用了3个SCL函数,open,attrn和close。
Open用来打开一个数据集并返回一个非零的描述符,参数I表示input(read only),详细的open mode见附录。Attrn函数用来获取相应数据集的指定数值类型的信息(attrc用于获取指定的字符型信息),NLOBS参数表示获取观察数。Close函数用于关闭数据集,这个是必须的,很重要。
sas attrn更多内容:
http://support.sas.com/documentation/cdl/en/sclref/59578/HTML/default/a000143464.htm