15.How to learn retain and sum statements in sas?

How to learn retain and sum statements in sas?


1.CREATING AN ACCUMULATING(OVERALL) TOTAL VARIABLE


2.ACCUMULATING TOTAL FOR GROUPING THE DATA


    1.RETAIN STATEMENT

    2.SUM STATEMENT



    1.RETAIN(HOLDING THE VALUE) STATEMENT


-->IT WILL RETAIN VALUE OF VARIABLE IN PDV ACROSS THE ITERATION OF DATASET

-->IT WILL INITIALIZE THE RETAIN VALUE TO 'MISSING/ZERO' BEFORE THE FIRST EXECUTION

-->IF THERE IS A MISSING VALUE IN  VARIABLE ,ALL VARIABLE VALUES WILL BE MISSING



DATA SAS;

INPUT ID SALARY;

CARDS;

101 25000

102 26000

103 27000

104 18000

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA SWA;

SET SAS;

TOTAL=SALARY+TOTAL;

RUN;

PROC PRINT;

RUN;


DATA SWA11;

SET SAS;

TOTAL=0;

TOTAL=SALARY+TOTAL; *25000+0=25000 26000+0=26000;

RUN;

PROC PRINT;

RUN;


DATA S;

SET SASHELP.CLASS;

AGENEW=0;

TOTAL=AGE+AGENEW;

RUN;

PROC PRINT;

RUN;


TO AVOID THIS CONDITION USE 'RETAIN' STATEMENT 


DATA SWA12;

SET SAS;

RETAIN TOTAL 0;

TOTAL=SALARY+TOTAL; *25000+0=25000 25000+26000=51000;

RUN;

PROC PRINT;

RUN;


WHAT IF THE VALUES ARE MISSING IN  THE DATA???

--->ALL VARIABLE VALUES WILL BE MISSING


DATA SAS12;

INPUT ID SALARY;

CARDS;

101 25000

102 26000

103 27000

104   .  

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA EWSS;

SET SAS12;

RETAIN TOTAL 0;

TOTAL=TOTAL+SALARY;

RUN;

PROC PRINT;

RUN;



WHAT IF THE DATA MISSING AT FIRST OBS??

-->ALL VALUES ARE MISSING


DATA SAS12;

INPUT ID SALARY;

CARDS;

101   .  

102   .  

103 27000

104 28000

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA EWSS;

SET SAS12;

RETAIN TOTAL 0;

TOTAL=TOTAL+SALARY;

RUN;

PROC PRINT;

RUN;


2.SUM


-->"AUTOMATICALLY IT WILL RETAIN" THE VARIABLE VALUES

-->HERE IT WILL CREATE 'NEW VARIABLE' VALUE ON THE LEFT SIDE OF PLUS(+) SIGN

            *WHERE IF THEN SUM;

                    EX::TOTAL+SALARY

-->INITIALIZE THE VALUE TO ZERO

-->**IT WILL "IGNORES THE MISSING" VALUES AND GIVE TOTAL/SUM OF THE OBS/VALUES



DATA SAS;

INPUT ID SALARY;

CARDS;

101 25000

102 26000

103 27000

104 18000

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA SUMM;

SET SAS;

TOTAL+SALARY;

RUN;

PROC PRINT;

RUN;


WHAT IF MISSING VALUES ARE IN OBS?

-->IT WILL WRITE THE VALUE BY ADDING THE NEXT SUM


DATA SAS;

INPUT ID SALARY;

CARDS;

101 25000

102 26000

103 .    

104 18000

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA WQW;

SET SAS;

TOTAL+SALARY;

RUN;

PROC PRINT;

RUN;


DATA SAS122;

INPUT ID SALARY;

CARDS;

101   .  

102   .  

103 27000

104 28000

105 28000

106 23000

107 29000

108 30000

109 31000

110 34000

;

RUN;

PROC PRINT;

RUN;


DATA WQW1;

SET SAS122;

TOTAL+SALARY;

RUN;

PROC PRINT;

RUN;


DATA WE;

INPUT AGE AGEN;

CARDS;

11 2

12 3

13 2

14 4

15 2

;

RUN;

PROC PRINT;

RUN;


-->NEED TOTAL WITH SUM STATEMENT


DATA OIY;

SET WE;

TOTAL+AGE+AGEN;

TOTAL=SUM(OF AGE,AGEN);

RUN;

PROC PRINT;

RUN;


   PLEASE FOLLOW THE BLOG FOR MORE INFORMATION...


Comments

Popular posts from this blog

397.If a satellite has excellent signal strength but very high latency, can it still deliver good quality communication? Why or why not?A Sas Study

401.How Efficient Are Global Data Centers? A Complete SAS Analytics Study

383.Which Pharma Distributors Are High-Risk? Can SAS Detect Delays, Temperature Violations, and Fraud?