## Create a variable with case when

Hello,

I am working with a dataset where the Race Category was input rather oddly.

Essentially, I have 8 binary variables, Race_White, Race_Black, Race_Asian, etc.

For each variable the response is 0 if false or 1 if true.

I need to combine each of these variables into a single race category for analysis.

Essentially creating a variable of Race where 1=White, 2=Black, 3=Asian etc. from the binary variables.

So far I am striking out. it seems to me this should be an if then function but I seem to be missing something

3 REPLIES 3

## Re: Create a variable with case when

Will the variables only be populated once?  If so you could just do:

```data want;
set have;
select (sum(of race_:));
when 1 then race="White";
when 2 then race=...;
...
end;
run;```

If not then you would need to do each one, and cat the result:

```data want;
set have;
array r{*} race_;;
do i=1 to dim(r);
if r{i}=1 then race=catx(',',race,vname(r{i});
end;
race=tranwrd(race,"race_","");
run;```

## Re: Create a variable with case when

It's not odd. It's done this way to account for multiple entries, ie someone can flag both White and Black, and it's also how a regression model requires the variables for analysis - with the dummy coded values of 0/1.  Make sure you need to change it first.

@DanielQuay wrote:

Hello,

I am working with a dataset where the Race Category was input rather oddly.

Essentially, I have 8 binary variables, Race_White, Race_Black, Race_Asian, etc.

For each variable the response is 0 if false or 1 if true.

I need to combine each of these variables into a single race category for analysis.

Essentially creating a variable of Race where 1=White, 2=Black, 3=Asian etc. from the binary variables.

So far I am striking out. it seems to me this should be an if then function but I seem to be missing something

## Re: Create a variable with case when

Thanks for the assistance, though I figured out how to do it without using an array.

The issue I was having was a simple thing in my data statement.

Discussion stats
• 3 replies
• 606 views
• 0 likes
• 3 in conversation