[英]sas macro do loop and ampersand to subset dataset
在下面的宏中,如何在数据步骤中自动从sashelp.cars中选择汽车。 我认为这涉及到&号%let dsn =&inDsn; ....
%macro subset_by_make (dsn=,carList=);
%let car_n = %sysfunc(countw(&carList, ' '));
%do i = 1 %to &car_n;
%let make = %scan (&carList, &i, ' ');
data cars_&make;
set sashelp.cars(where = (make = "&make"));
run;
proc print data=cars_&make;
run;
%end;
%mend subset_by_make;
%subset_by_make(dsn=sashelp.cars, carList= Acura Toyota);
希望对Maggie有所帮助
如果您只想打印出按make分组的汽车数据集,则这里根本不需要任何宏代码:
proc sort data = sashelp.cars out = cars;
by make;
run;
proc print data = cars;
where make in ('Acura','Toyota');
by make;
run;
丽莎,对不起,我的问题令人困惑。 我想从sashelp.cars创建各种名为cars_acura,cars_toyota等的数据集
下面,我想我已经找到了解决方案。 谢谢大家的帮助!
%macro subset_by_make (lib=,inDsn=,carList=);
%let car_n = %sysfunc(countw(&carList, ' '));
%do i = 1 %to &car_n %by 1;
%let make = %scan (&carList, &i, ' ');
title "dataset: &inDsn._&make";
data &inDsn._&make;
set &lib..&inDsn(where = (make = "&make"));
run;
proc print data=cars_&make;
run;
%end;
%mend subset_by_make;
%subset_by_make(lib=sashelp,inDsn=cars,carList= Acura Toyota);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.