Hello
The below code will mark each zero across the variables V1 to V10 (Column) as missing value (.dot)
data credit;
set file;
array x(*) V1 -- V10;
do i=1 to dim(x);
if x(i)=0 then x(i)=.;
end;
run;
Let's say in regression analysis while creating dummy variables, X variable has 7 categories and I would like to create dummy variables for those 7 categories.
How can I write codes using array or macros to create dummy variables, Is it possible?
Need help.
You could also use an ARRAY to help with making dummy variables. So if X has 7 values (1 to 7) then this code will make variables DUMMY1 to DUMMY7 with 0/1 values.
data want ;
set have ;
array dummy (7);
do i=1 to dim(dummy);
dummy(i)=(x=i);
end;
run;
Note that if X is not simply the values 1 to 7 then it is a little harder. You should look at the GLMMOD procedure as a way to generate dummy variables.
You could also use an ARRAY to help with making dummy variables. So if X has 7 values (1 to 7) then this code will make variables DUMMY1 to DUMMY7 with 0/1 values.
data want ;
set have ;
array dummy (7);
do i=1 to dim(dummy);
dummy(i)=(x=i);
end;
run;
Note that if X is not simply the values 1 to 7 then it is a little harder. You should look at the GLMMOD procedure as a way to generate dummy variables.
Assuming X is numeric, you don't need to know the number of values ahead of time. Here is the idea:
proc sql noprint;
select distinct X into : list_of_x separated by ' ' from have;
quit;
data want;
set have;
%do i=1 %to &sqlobs;
dummy&i = (x=%scan(&list_of_x, &i));
%end;
run;
Of course, you will need to define a macro to hold the logic, because of the %DO loop.
Good luck.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.