Sunday, 16 March 2025

129.INPUT | SET | RETAIN | IF THEN DO | CALL SYMPUTX | SYMGET

   INPUT | SET | RETAIN | IF THEN DO |  CALL SYMPUTX | SYMGET


/*Store the average dose for drug A in a macro variable using CALL SYMPUTX.*/

/*Retrieve it in another DATA step using SYMGET.*/


DATA DRUGDOSE;

 INPUT USUBJID DRUG$ DOSE;

 CARDS;

101 A 50

102 B 75

103 A 100

;

RUN;

PROC PRINT;RUN;


OUTPUT:

Obs USUBJID DRUG DOSE
1 101 A 50
2 102 B 75
3 103 A 100


DATA NEW;

 SET DRUGDOSE END=LAST;

 RETAIN TOTAL DOSE_COUNT;

 IF DRUG='A' THEN DO;

 TOTAL+DOSE;

 DOSE_COUNT+1;

 END;

 IF LAST THEN DO;

  IF DOSE_COUNT > 0 THEN 

  CALL SYMPUTX('AVG_A',TOTAL/DOSE_COUNT);

 END;

RUN;

PROC PRINT;RUN;


OUTPUT:
Obs USUBJID DRUG DOSE TOTAL DOSE_COUNT
1 101 A 50 50 1
2 102 B 75 50 1
3 103 A 100 150 2


DATA AVG;

 AVG_A=SYMGET('AVG_A');

RUN;

PROC PRINT;RUN;


OUTPUT:
Obs AVG_A
1 75


PRACTICE AND COMMENT YOUR CODE: 

-->PLEASE FOLLOW OUR BLOG FOR MORE UPDATES.

TO FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

No comments:

Post a Comment