SAS attrn、fetchobs、varnum、getvarc的解释

data test;

input regionstatemonth monyy5. headcnt expenses revenue;

format month monyy5.;

cards;

EASTERN VA FEB78 10 7800 15500

SOUTHERN FL MAR78 9 9800 13500

SOUTHERN GA JAN78 5 2000 8000

NORTHERN MA MAR78 3 1500 1000

SOUTHERN FL FEB78 10 8500 11000

NORTHERN NY MAR78 5 6000 5000

EASTERN VA MAR78 11 8200 16600

PLAINS NM MAR78 2 1350 500

SOUTHERN FL JAN78 10 8000 10000

NORTHERN NY FEB78 4 3000 4000

SOUTHERN GA FEB78 7 1200 6000

;

run;

%macro test;

data ttest;

%let dsid=%sysfunc(open(test));

%if &dsid gt 0 %then %do;

%let nobs=%sysfunc(attrn(&dsid,nobs));

%do i=1 %to &nobs;

%let rc=%sysfunc(fetchobs(&dsid,&i));

%let varnume=%sysfunc(varnum(&dsid,region));

%let variable=%sysfunc(getvarc(&dsid,&varnume));

%put "&dsid";

%put "&nobs";

%put "&rc";

%put "&varnume";

%put "&variable";

%put *****************;

%end;

%let rc=%sysfunc(close(&dsid));

%end;

run;

%mend test;


%let varnume=%sysfunc(varnum(&dsid,region));/*varnum是返回变量region的位置,在这变量region是第j列,所以varnume的值为j*/

%let rc=%sysfunc(fetchobs(&dsid,&i));/*读取指定的第i条观测,若成功则返回0,返回-1表示已读取完所有观测 。

%let variable=%sysfunc(getvarc(&dsid,&varnume));/*getvarc是将第i条观测的第j(因为varnume的值为j)个变量的值赋给variable,此外getvarc是针对读取字符型的变量,getvarn是针对读取数值型的变量*/                                    注:getvarc要配合fetchobs使用,fetchobs控制读取值所在的观测数。

另外

Open用来打开一个数据集并返回一个非零的描述符,参数I表示input(read only);

Attrn函数用来获取相应数据集的指定数值类型的信息(attrc用于获取指定的字符型信息),可用attrn函数计算行数列数。例如:

%let dsid=%sysfunc(open(sashelp.class,i));

%let n=%sysfunc(attrn(&dsid,nobs));   /*注:计算列数用nvars*/  

%let rc=%sysfunc(close(&dsid));

%put obsnum=&n;

Close函数用于关闭数据集。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,761评论 0 10
  • 今天,用五分钟跟大家说说一个老生常谈的话题——坚持,看它在一个女子身上发生了怎样的故事。 这个女子出生在80年代,...
    嗨蔡园园阅读 941评论 2 14
  • 2017年8月25日 星期五 “疯疯”火火冲到检票口时,距离火车发车还有两分钟,可这时检票口已关闭。我试图说服两...
    大事小事儿阅读 192评论 0 0
  • 薛侃录 【原典100】因论先生之门,某人在涵养上用功,某人在识见上用功。 先生曰:“专涵养者,日见其不足;专识见者...
    海上明月共阅读 1,565评论 0 0
  • 有一天我会离开这个世界。 但我真的会离开吗? 一场绝美的夕阳正在发生 在你所能找到的最高的楼顶上,看着漫天的柔和光...
    汪浩阅读 512评论 0 3

友情链接更多精彩内容