全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1149 2
2010-07-21
需求:有两张表,一张名为‘riskmap’是全国各省数据,另一张名为‘location’是地区机构表(三个字段,一是省名location,二是省号location_code(顺序号),三是省下面地市名locaiton_son),现在需要生成各地市的数据,完全复制其所属省份的数据,以下SAS程序请高手看哪里有问题??

%macro change();                                                                                                                        
%let a=1;                                                                                                                              
%do %until(&a.>22);                                                                                                                     
   proc sql noprint;                                                                                                                    
   select distinct location                                                                                                            
   into:loc                                                                                                                             
   from location                                                                                                                       
   where location_code=&a.;                                                                                                            
   quit;                                                                                                                                
                                                                                                                                       
   data locson;                                                                                                                        
   set location(where=(location=&loc.));                                                                                               
   quit;                                                                                                                                
                                                                                                                                       
   data _null_;                                                                                                                        
   set locson nobs=b;                                                                                                                  
   %let c=b;                                                                                                                           
   quit;                                                                                                                                
                                                                                                                                       
   data risk;                                                                                                                           
   set riskmap(where=(location=&loc.));                                                                                                
   quit;                                                                                                                                
                                                                                                                                       
   %let d=1;                                                                                                                           
   %do %until(&d.>&c.);                                                                                                                 
       proc sql noprint;                                                                                                               
       select location_son                                                                                                              
       into:lson                                                                                                                        
       from locson                                                                                                                     
       where _n_=&d.;                                                                                                                  
       quit;                                                                                                                           
                                                                                                                                       
       data map&a.&d.;                                                                                                                  
       set risk;                                                                                                                        
       location=symget("lson");                                                                                                         
       quit;                                                                                                                           
                                                                                                                                       
       proc append base=null data=map&a.&d.;                                                                                            
       quit;                                                                                                                           
                                                                                                                                       
       &d+1;                                                                                                                           
   %end;                                                                                                                                
                                                                                                                                       
   &a+1;                                                                                                                                
%end;                                                                                                                                   
%mend change;                                                                                                                           
                                                                                                                                       
%change;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-7-21 21:58:26
发点样本数据?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-7-23 15:21:49
复制代码
这是想用macro variable c存储sas data set locson的obs的数量?
1 用call symputx()替换%let语句
2 用run;替换quit;
其他内容没看懂
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群