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;
Comments
Post a Comment