SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 745|回复: 3
打印 上一主题 下一主题

请教:如何根据某个字段的值做循环

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-8-28 19:05:54 | 只看该作者

请教:如何根据某个字段的值做循环

现在有全国34个省的数据,其中有个变量时province,我想对每个省份的数据做同样的处理,我能想到是下面的笨办法,每个省见一个数据集,然后分别处理,
但是因为34个省的代码都不是连续的,只能一个一个手敲,而且后面还有很多程序运行,感觉有点费力……

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

data province_110;
set a;
if province=110;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-8-28 20:17:11 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-8-28 20:49:59 | 只看该作者

Re: 请教:如何根据某个字段的值做循环

崔颢题诗在上头。呵呵。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-8-28 22:48:47 | 只看该作者

Re: 请教:如何根据某个字段的值做循环

厉害!学习了! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 21:38 , Processed in 0.127237 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表