BookmarkSubscribeRSS Feed
Dhana18
Obsidian | Level 7

good afternoon,

please tell what is wrong wit this code.

DATA STDTELMT.MERGED_I1;
SET STDTELMT.MERGED_I;
IF SEX_WITH_MALE="1" THEN GENDER_SP="1";
IF SEX_WITH_MAN="1" AND SEX_W_MALE="0" THEN GENDER_SP="1";
IF SEX_W_FEMALE="1" THEN GENDER_SP="2";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="3";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="1" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="3";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="1" AND SEX_W_TRANSGENDER="1" THEN GENDER_SP="3";
IF SEX_W_FEMALE="0" AND SEX_WITH_MALE="0" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="9";
IF SEX_W_FEMALE="0" AND SEX_WITH_MALE="0" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="1" THEN GENDER_SP="9";
RUN;

 

/*CHECKING TO SEE IF THE CODE ABOVE WORKED*/
PROC FREQ DATA=STDTELMT.MERGED_I1;
TABLE GENDER_SP;
RUN;

 

it only created this table.


The FREQ Procedure
GENDER_SP Frequency Percent CumulativeFrequency CumulativePercent1Frequency Missing = 3602
1529100.001529100.00
4 REPLIES 4
PeterClemmensen
Tourmaline | Level 20

What does your log say? Does the code generate an error?

noling
SAS Employee

If your syntax is correct then this is probably a logic issue and there are records that don't match any of your criteria. You could look at your output STDTELMT.MERGED_I1 table for records without a GENDER_SP value, then troubleshoot. 


Register today and join us virtually on June 16!
sasglobalforum.com | #SASGF

View now: on-demand content for SAS users

Dhana18
Obsidian | Level 7
Thank you! It was like what you said.
ballardw
Super User

@Dhana18 wrote:

good afternoon,

please tell what is wrong wit this code.

DATA STDTELMT.MERGED_I1;
SET STDTELMT.MERGED_I;
IF SEX_WITH_MALE="1" THEN GENDER_SP="1";
IF SEX_WITH_MAN="1" AND SEX_W_MALE="0" THEN GENDER_SP="1";
IF SEX_W_FEMALE="1" THEN GENDER_SP="2";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="3";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="1" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="3";
IF SEX_W_FEMALE="1" AND SEX_WITH_MALE="1" AND SEX_W_MAN="1" AND SEX_W_TRANSGENDER="1" THEN GENDER_SP="3";
IF SEX_W_FEMALE="0" AND SEX_WITH_MALE="0" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="0" THEN GENDER_SP="9";
IF SEX_W_FEMALE="0" AND SEX_WITH_MALE="0" AND SEX_W_MAN="0" AND SEX_W_TRANSGENDER="1" THEN GENDER_SP="9";
RUN;

 

/*CHECKING TO SEE IF THE CODE ABOVE WORKED*/
PROC FREQ DATA=STDTELMT.MERGED_I1;
TABLE GENDER_SP;
RUN;

 

it only created this table.


The FREQ Procedure
GENDER_SP Frequency Percent CumulativeFrequency CumulativePercent1Frequency Missing = 3602
1529 100.00 1529 100.00

If you run the following code it will show all of the assignment combinations of the variable and the independent variables.

proc freq data=stdtelmt.merged_i1;
   tables  SEX_WITH_MALE*SEX_WITH_MAN* SEX_W_FEMALE*SEX_W_MAN*SEX_W_TRANSGENDER*GENDER_SP
          /list missing;
run;

 My suspicion involves either missing values for like named variables SEX_WITH_MALE and SEX_W_MAN plus use of "AND" where likely OR was needed.

 

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
  • 4 replies
  • 489 views
  • 0 likes
  • 4 in conversation