SAS中文论坛

标题: 请教:如何根据某个字段的值做循环 [打印本页]

作者: shiyiming    时间: 2009-8-28 19:05
标题: 请教:如何根据某个字段的值做循环
现在有全国34个省的数据,其中有个变量时province,我想对每个省份的数据做同样的处理,我能想到是下面的笨办法,每个省见一个数据集,然后分别处理,
但是因为34个省的代码都不是连续的,只能一个一个手敲,而且后面还有很多程序运行,感觉有点费力……

想请教版上的大侠,有没有方法能实现根据某个字段的值做循环? 如根据province 的34个值自动将程序运行34次? 谢谢!!!

data province_110;
set a;
if province=110;
run;
作者: shiyiming    时间: 2009-8-28 20:17
标题: Re: 请教:如何根据某个字段的值做循环
[code:12fqnhhy]%macro do_by_var_list(inds,id_var);
        options nosymbolgen nomprint;
        proc sql;
                create table &id_var._list as
                        select distinct &id_var as name from &inds;
        quit;
        %let dsid=%sysfunc(open(&id_var._list,i));
        %syscall set(dsid);
        %let nobs=%sysfunc(attrn(&dsid,nobs));
        %do i=1 %to &nobs;
                %let rc=%sysfunc(fetchobs(&dsid,&i));
                /* by变量的variable name:&id_var */
                /* by变量的value:&id_var(character的变量用"") */
                /* some statements */
                proc print data=&inds(where=(&id_var="&name"));
                run;
        %end;
        %let rc=%sysfunc(close(&dsid));
        proc delete data=work.&id_var._list;
        quit;
%mend do_by_var_list;       

%do_by_var_list(sashelp.class,sex)[/code:12fqnhhy]
作者: shiyiming    时间: 2009-8-28 20:49
标题: Re: 请教:如何根据某个字段的值做循环
崔颢题诗在上头。呵呵。
作者: shiyiming    时间: 2009-8-28 22:48
标题: Re: 请教:如何根据某个字段的值做循环
厉害!学习了! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2