Users define a couple of macro variables (input):
%let category = A B;
%let class = apple banana;
%let column = index character;The generated table/dataset (output) would look like:
category class index character
A apple . .
A banana . .
B apple . .
B banana . .As you can see, for column 1 and column 2, they basically go through values of the macro variables, with macro variables' names as the column names. For column 3 and column 4, blanks, with macro variable's value as the column names (column 'index' has numeric values; column 'character' has char.)
How to achieve it?
Untested, so it's possible it needs a little debugging:
%macro generate (category=, class=, column=);
%local i j;
data want;
length category class $ 8 &column 8;
%do i=1 %to %sysfunc(countw(&category));
%do j=1 %to %sysfunc(countw(&class));
category = "%scan(&category, &i)";
class = "%scan(&class, &j)";
output;
%end;
%end;
run;
%mend generate;
%generate (category=A B, class=apple banana, column=index character)
Untested, so it's possible it needs a little debugging:
%macro generate (category=, class=, column=);
%local i j;
data want;
length category class $ 8 &column 8;
%do i=1 %to %sysfunc(countw(&category));
%do j=1 %to %sysfunc(countw(&class));
category = "%scan(&category, &i)";
class = "%scan(&class, &j)";
output;
%end;
%end;
run;
%mend generate;
%generate (category=A B, class=apple banana, column=index character)
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.