BookmarkSubscribeRSS Feed
elli444
Calcite | Level 5

Hello all, 

I am creating a new variable in a data step. The code is below:

if hisp_not='.' then ethnicity1='';
if hisp_not='1' then ethnicity1='';
if hisp_not='0' then ethnicity1='E1';

 

When I run a proc print of var ethnicity1 the output has changed to "E". 

elli444_0-1593444321573.png

 

It is essential for the output data to be E1 in order to import into our database. 

I checked and the format is $4 so it's not a formatting issue. 

 

Does anyone have any idea why this would happen and how to fix it?

Thank you!

2 REPLIES 2
ballardw
Super User

If you examine the properties of the variable Ethnicity1 you will find that it has a length of one character and so cannot accept the second character. Format does not control length, only display appearance.

 

If the first use of a character variable is an assignment such as your Ethnicity1=''; that will set the length of the variable. You need to specify a length before use if want it to hold longer values.

 

length Ethnicity1 $ 2 ;

BEFORE the assignment code you are using.

If you want multiple values treated the same you can use the IN operator

if hisp_not='.' then ethnicity1='';
if hisp_not='1' then ethnicity1='';

/* can be replaced with*/
if hisp_not in ('.' '1' ) then ethnicity1='';

 

Reeza
Super User
is your variable hisp_not numeric or character?

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 352 views
  • 1 like
  • 3 in conversation