- %let object=question;/*你给的总结性的数据表*/
- %macro a;
- %do i=1 %to 871;/*共有871张表,分开来做数据的合并*/
- data x;
- set &object.;
- if a=&i.;
- run;/*得到第一组等待合并的数据集信息*/
- data y;
- set x nobs=n;
- if _n_=1;
- var=scan(unique_name,1,'_');
- call symput('var',var);/*得到待匹配的变量名,并赋值给宏变量var*/
- call symput('n',n);/*得到共有多少组数据集要合并,并赋值给宏变量n*/
- call symput('name',unique_name);/*得到新的表的名字*/
- run;
- /*
- %put &var.;
- %put &n.;
- */
- data &name.;
- &var.=.;
- run;
- %do j=1 %to &n.;
- data x_&j.;
- set x;if _n_=&j.;call symput("data_&j",table_name);run;/*分别把要合并的变量名赋值给宏变量data_&j*/
- data &name.;
- set &name. &&data_&j(keep=&var);
- by &var.
- run;
- %end;
- %end;
- %mend a;
- %a