/* Problem 1 */ /* part (a) */ %LET playername = Don; proc print data=sashelp.baseball; WHERE Name CONTAINS "&playername"; title "Statistics for Players whose name contains &playername"; run; /* part (b) */ %MACRO descripstat(mystat=, datasetname=, varname=); PROC MEANS &mystat DATA = &datasetname; VAR &varname; TITLE "The &mystat for the &varname variable in &datasetname"; run; %MEND descripstat; /* part (c) */ %descripstat(mystat=mean, datasetname=sashelp.baseball, varname=nHits) %descripstat(mystat=sum, datasetname=sashelp.baseball, varname=nHome) /* part (d) */ %MACRO descripstat2(varnames) / parmbuff; %local num; %do num=1 %to %sysfunc(countw(&syspbuff)); %let varnames=%scan(&syspbuff,&num); PROC MEANS MEAN DATA = sashelp.baseball; VAR &varnames; TITLE "The mean for the &varnames variable for sashelp.baseball"; run; %END; %MEND descripstat2; %descripstat2(nhits, nhome) /* Part (e) */ %MACRO topfew(stat=, pos=, leaguevalue=, numberlisted=); TITLE "Top &numberlisted at &pos in &leaguevalue League in &stat"; PROC SQL outobs=&numberlisted; SELECT Name, team, position, &stat FROM sashelp.baseball WHERE position = "&pos" AND league = "&leaguevalue" ORDER BY &stat desc; * Note Double Quotes needed; RUN; %MEND topfew; /* Part (f) */ %topfew(stat=nRBI, pos=1B, leaguevalue=American, numberlisted=4)