sas codes and tricks

27
MIDS PROC CONTENTS DATA=ATIFRAZA.ATIFRAZA; RUN; PROC MEANS DATA=ATIFRAZA.ATIFRAZA NMISS N MEAN STD SKEW KURT MIN MAX CSS MAXDEC=3; RUN; DATA ATIFRAZA.ATIFRAZA; SET ATIFRAZA.ATIFRAZA; LABEL INVOICE = 'Pricce'; RUN; PROC CONTENTS DATA=ATIFRAZA.ATIFRAZA; RUN; PROC UNIVARIATE DATA=ATIFRAZA.ATIFRAZA; VAR CYLINDERS; RUN; /* PROC MEANS WITH MAX AND MIN ID */ PROC MEANS DATA=ATIFRAZA.ATIFRAZA NOPRINT; VAR INVOICE CYLINDERS; OUTPUT OUT=ATIFRAZA.abc MAX = MaxInv MaxCyl MAXID(INVOICE(MODEL) CYLINDERS(MODEL)) = MaxInvoice MaxCylinders MIN = MinInv MinCyl MINID(INVOICE(MODEL) CYLINDERS(MODEL)) = MinInvoice MinCylinders ; RUN; PROC PRINT DATA=ATIFRAZA.ATIFRAZA; RUN; /* TWO WAT CONTINGENCY TABLE WITH CHI SQUARE AND FREQPLOT */ PROC FREQ DATA=ATIFRAZA.ATIFRAZA; TABLE TYPE*ORIGIN/CHISQ; TABLE TYPE*ORIGIN/ PLOT=FREQPLOT(TYPE=DOT); TITLE 'TYPE AND ORIGIN TABLE'; RUN; PROC FREQ DATA=ATIFRAZA.ATIFRAZA; TABLE MAKE ORIGIN; RUN; PROC FREQ DATA=ATIFRAZA.ATIFRAZA;

Upload: rizrazariz

Post on 11-Apr-2017

20 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: SAS CODES AND TRICKS

MIDSPROC CONTENTS DATA=ATIFRAZA.ATIFRAZA;RUN;

PROC MEANS DATA=ATIFRAZA.ATIFRAZA NMISS N MEAN STD SKEW KURT MIN MAX CSS MAXDEC=3;RUN;

DATA ATIFRAZA.ATIFRAZA; SET ATIFRAZA.ATIFRAZA; LABEL INVOICE = 'Pricce'; RUN; PROC CONTENTS DATA=ATIFRAZA.ATIFRAZA;RUN;

PROC UNIVARIATE DATA=ATIFRAZA.ATIFRAZA; VAR CYLINDERS;RUN;

/* PROC MEANS WITH MAX AND MIN ID */PROC MEANS DATA=ATIFRAZA.ATIFRAZA NOPRINT;VAR INVOICE CYLINDERS;OUTPUT OUT=ATIFRAZA.abcMAX = MaxInv MaxCylMAXID(INVOICE(MODEL) CYLINDERS(MODEL)) = MaxInvoice MaxCylindersMIN = MinInv MinCylMINID(INVOICE(MODEL) CYLINDERS(MODEL)) = MinInvoice MinCylinders;RUN;

PROC PRINT DATA=ATIFRAZA.ATIFRAZA;RUN;

/* TWO WAT CONTINGENCY TABLE WITH CHI SQUARE AND FREQPLOT */PROC FREQ DATA=ATIFRAZA.ATIFRAZA; TABLE TYPE*ORIGIN/CHISQ; TABLE TYPE*ORIGIN/ PLOT=FREQPLOT(TYPE=DOT); TITLE 'TYPE AND ORIGIN TABLE';RUN;

PROC FREQ DATA=ATIFRAZA.ATIFRAZA; TABLE MAKE ORIGIN;RUN;

PROC FREQ DATA=ATIFRAZA.ATIFRAZA; TABLE MAKE/ PLOT=FREQPLOT(TYPE=DOT); WEIGHT CYLINDERS;RUN;

proc print data=atifraza.ATIFRAZA;run;

PROC FREQ DATA=ATIFRAZA.ATIFRAZA;TABLE Type*Origin/CHISQ;TABLE Type*Origin/ PLOT=FREQPLOT(TYPE=DOT);

Page 2: SAS CODES AND TRICKS

WEIGHT INVOICE;TITLE 'TYPE AND ORIGIN TABLE';

RUN;

PROC UNIVARIATE DATA=ATIFRAZA.ATIFRAZA WINSORIZED=10TRIMMED=10ROBUSTSCALE;VAR CYLINDERS;

RUN;

/* REPLACE MISSING VALUE WITH MEAN */PROC STDIZE DATA=atifraza.ATIFRAZA

OUT=ATIFRAZA.ATIFRAZAOK REPONLY MISSING=MEAN;VAR CYLINDERS;BY NOTSORTED TYPE;

RUN;

PROC CORR DATA=atifraza.ATIFRAZAOK pearson PLOTS=matriX(HISTOGRAM);RUN;

/* MERGING TWO TABLES */

data class;input Name $ 1-25 Year $ 26-34 Major $ 36-50;datalines;Abbott, Jennifer firstCarter, Tom third TheaterMendoza, Elissa fourth MathematicsTucker, Rachel firstUhl, Roland secondWacenske, Maurice third Theater;run;proc print data=class;title 'Acting Class Roster';run;

data GRADE;input Name $ 1-25 Year $ 26-34 GRADE $ 36-50;datalines;Abbott, Jenni first DCarter, Tom third TMendoza, fourth MTucker, Ra first AUhl, Roland second BWacenske, Maurice third C;run;proc print data=GRADE;title 'Acting Class Roster';run;

proc sort data=class;by major;run;

Page 3: SAS CODES AND TRICKS

DATA MERGED;MERGE CLASS(drop=year) GRADE (drop=year RENAME=(NAME=ndName));by major;

RUN;PROC PRINT DATA=MERGED;RUN;

/* adding engines of only chevrolet in make using where statement */proc sort data=ATIFRAZA.ATIFRAZA out=WORK.SORTTEMP;

where MAKE='Chevrolet';;by Make;

run;

proc print data=WORK.SORTTEMP label;var Cylinders;by Make;sum Cylinders;

run;

proc delete data=work.SORTTEMP;run;

/* ADDING A NEW VARIABLE WITH THE HELP OR PREVIOUS VARIABLES ALSO DROPPING AND RENAMING IN SAME COMMAND */DATA DUMMY;

SET ATIFRAZA.ATIFRAZA (rename=(Horsepower=HP) DROP=TYPE MAKE ORIGIN);AVERAGE=(INVOICE+MSRP)/2;

RUN;

/* CREATING A NEW VARIABLE AND SETTING ITS VALUE ACCORDING TO SCORE IN ANOTHER VARIABLE */DATA TESTOFRANKVARIABLE;

SET ATIFRAZA.ATIFRAZA;if CYLINDERS>8 then STATUS="LARGE";if CYLINDERS<=8 then STATUS="MEDIUM";if CYLINDERS<=6 then STATUS="SMALL";if CYLINDERS=. then STATUS="UNKNOWN";RUN;

/* TOTAL (MEAN STD) BY CLASS I.E. TOTAL OF ITEMS BY CLASSES */

proc means data=atifraza.cake;var PresentScore TasteScore;class flavor;output out=Cake_Desc mean=Avg_PS Avg_TS Std=SD_PS SD_TS SUM=TOTALPS

TOTALTS; run;

/* SCANNING A VARIABLE AND THEN PUTTING NAME INVESTED */

DATA ATIFRAZA.MARKS; INPUT S_NO $ NAME $10. DATE MMDDYY10. MARKS GRADE $; FORMAT DATE MMDDYY10.;DATALINES;01 ALI RAZA 09122000 80 A

Page 4: SAS CODES AND TRICKS

02 AHMED KHAN 02242011 75 B03 BINA ALI 08302006 60 C04 MARIA ZIA 07212004 89 A;RUN;

DATA ATIFRAZA.MARKS2;SET ATIFRAZA.MARKS;F=SCAN(NAME,+1);L=SCAN(NAME,+2);NAMES=L||(",")||F;

RUN;

/*PANEL DATA*/

/* create lags and differencials in panel data */PROC SORT DATA=ATIFRAZA.CPII;

BY COUNTRY;RUN;PROC PRINT DATA=ATIFRAZA.CPII;RUN;

PROC TRANSPOSE DATA=ATIFRAZA.CPII OUT=ATIFRAZA.CPIITRANS;BY COUNTRY;RUN;

DATA ATIFRAZA.CPITRANS (RENAME=(COL1=CPI _NAME_=YEARS));SET ATIFRAZA.CPIITRANS;

RUN;

DATA ATIFRAZA.ESPAK;SET ATIFRAZA.CPITRANS;IF COUNTRY='PAK';

/* CREATING DIFFERENCIAL AND LAGS IN A TIME SERIES DATA */LAG_PK =LAG(CPI);DCPI_PK =DIF(CPI);

RUN;

PROC PANEL DATA=ATIFRAZA.CPITRANS;ID COUNTRY YEARS;LAG CPI(1)/OUT=ATIFRAZA.LAGPANEL;

RUN;

/* EXTRA WORK *//*Taking lags without moving the lastone in the next country----better method*/PROC SORT DATA=ATIFRAZA.wdi; BY country;run;

proc transpose data=ATIFRAZA.wdi out=ATIFRAZA.transwdi;by country;

run;

proc contents data=ATIFRAZA.transwdi;

Page 5: SAS CODES AND TRICKS

run;

data ATIFRAZA.panelwdi (rename=(col1=GDP col2=INF col3=FDI _name_=year));set ATIFRAZA.transwdi;drop _LABEL_;run;

data ATIFRAZA.panelwdifor;set ATIFRAZA.panelwdi;

format FDI dollar10. GDP dollar10. INF dollar10.;run;

proc contents data=ATIFRAZA.panelwdifor;run;

/*to create lag*/data ATIFRAZA.panelogdata;set ATIFRAZA.panelwdifor;by country;Lag_GDP=lag(GDP);Lag_FDI=lag(FDI);Lag_INF=lag(INF);if first.country then do; Lag_GDP=.; Lag_FDI=.; Lag_INF=.;end;run;

/*to create differnce*/data ATIFRAZA.paneldifdata;set ATIFRAZA.panelwdifor;by country;dif_GDP=dif(GDP);dif_INF=dif(INF);dif_FDI=dif(FDI);if first.country then do; dif_GDP=.;

dif_INF=.; dif_FDI=.;

end;run;

PROC UNIVARIATE DATA=ATIFRAZA.ATIFRAZA;QQPLOT CYLINDERS/NORMAL (MU=EST SIGMA=EST);

RUN;

Page 6: SAS CODES AND TRICKS

FINALSPROC PRINT DATA=ATIFRAZA.AIRTOUR;RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF 500 <= LANDCOST <= 1000 THEN TYPE='Medium';ELSE IF 1000 < LANDCOST <= 1500 THEN TYPE='Costly';ELSE TYPE = 'Low';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF (NIGHTS > 3 OR NUMBEROFEVENTS > 5) AND (TOURGUIDE = 'lucas' OR

CITY='paris') THEN TYPE = 'Ha Ha Ha';RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF LANDCOST THEN REMARKS = 'OK ';ELSE REMARKS = 'MISSING';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF TOURGUIDE = 'Lucas' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF UPCASE(TOURGUIDE) = 'LUCAS' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF TOURGUIDE = :'L' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF TOURGUIDE > :'L' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF INDEX(EVENTDESCRIPTION, 'other') THEN DOUBT ='YES';ELSE DOUBT = 'NO';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;

Page 7: SAS CODES AND TRICKS

IF INDEX(UPCASE(EVENTDESCRIPTION), 'OTHER') THEN DOUBT ='YES';ELSE DOUBT = 'NO';

RUN;

DATA AIRTOUR2;SET ATIFRAZA.AIRTOUR;IF NIGHTS >= 6;

RUN;

DATA AIRTOUR1 AIRTOUR2;SET ATIFRAZA.AIRTOUR;IF NIGHTS >= 6 THEN OUTPUT AIRTOUR1;ELSE OUTPUT AIRTOUR2;

RUN;

DATA AIRTOUR1 AIRTOUR2;SET ATIFRAZA.AIRTOUR;IF NIGHTS >=6 THEN OUTPUT AIRTOUR1;IF TOURGUIDE ='Lucas' THEN OUTPUT AIRTOUR2;

RUN;

DATA AIRTOUR1 AIRTOUR2;SET ATIFRAZA.AIRTOUR;TOTALNIGHTS=NIGHTS+1;IF TOURGUIDE ='Lucas' THEN OUTPUT AIRTOUR1;ELSE OUTPUT AIRTOUR2;

RUN;/* REGRESSION DIAGNOSTICS */

DATA ATIFRAZA.HEART (DROP=STATUS DEATHCAUSE AGECHDDIAG AGEATSTART SMOKING--SMOKING_STATUS);

SET SASHELP.HEART;LABEL SEX = 'Gender';LABEL HEIGHT = 'Height (cm)';LABEL WEIGHT = 'Weight (cm)';LABEL DIASTOLIC = 'Diastolic';LABEL SYSTOLIC = 'Systolic';

RUN;

PROC CONTENTS DATA=ATIFRAZA.HEART;RUN;

PROC MEANS DATA=ATIFRAZA.HEART NMISS;RUN;

PROC CORR DATA=ATIFRAZA.HEART PLOTS=MATRIX(HISTOGRAM)PLOTS(MAXPOINTS=NONE);RUN;

/* RUNNING REGRESSION AND CALCULATING RSTUDENT LEVERAGE COOKS'D AND DFFIT */

PROC REG DATA=ATIFRAZA.HEART PLOTS(MAXPOINTS=NONE);MODEL WEIGHT = SYSTOLIC DIASTOLIC HEIGHT;OUTPUT OUT=ATIFRAZA.DIAG (KEEP=WEIGHT HEIGHT SYSTOLIC DIASTOLIC R LEV CD

DFFIT) RSTUDENT=R H=LEV COOKD=CD DFFITS=DFFIT;

RUN;

/* PRINTING OBSERVATIONS THAT HAVE LEVERAGE > CUT-OFF POINT */

Page 8: SAS CODES AND TRICKS

PROC PRINT DATA=ATIFRAZA.DIAG;WHERE LEV>(2*3/5209);

RUN;

/* PRINTING OBSERVATIONS THAT HAVE RSTUDENT > CUT-OFF POINTALSO TAKE ABSOLUTE OF R SO THAT NEGATIVE VALUES MAY ALSO BE INCLUDED */PROC PRINT DATA=ATIFRAZA.DIAG;

WHERE ABS(R)>2;RUN;

/* PRINTING OBSERVATIONS THAT HAVE COOKS'D > CUT-OFF POINT */PROC PRINT DATA=ATIFRAZA.DIAG;

WHERE CD>(4/5209);RUN;

/* LOOKING FOR HIGH INFLUENCE VALUES OBSERVATION-WISE */PROC REG DATA=ATIFRAZA.HEART PLOTS(MAXPOINTS=NONE);

MODEL WEIGHT = SYSTOLIC DIASTOLIC HEIGHT/INFLUENCE;RUN;

/* CREATING A NEW VARIABLE HAVING SERIAL/OBSERVATION NUMBER IN ORDER TO CREATE A UNIQUE ID */DATA ATIFRAZA.HEART;

SET ATIFRAZA.HEART;OBS+1;

RUN;

/* WORKING WITH DUMMY VARIABLES */

DATA ATIFRAZA.IRIS;SET SASHELP.IRIS;

RUN;

PROC PRINT DATA=ATIFRAZA.IRIS;RUN;

PROC REG DATA=ATIFRAZA.IRIS;MODEL SEPALWIDTH = SEPALLENGTH;

RUN;

DATA ATIFRAZA.IRISD;SET ATIFRAZA.IRIS;IF SPECIES='Setosa' THEN DSETOSA=1;ELSE DSETOSA=0;IF SPECIES='Versicolor' THEN DVERSI=1;ELSE DVERSI=0;

RUN;

PROC PRINT DATA=ATIFRAZA.IRISD;RUN;

PROC REG DATA=ATIFRAZA.IRISD;MODEL SEPALWIDTH = DSETOSA DVERSI;

RUN;

/* IF THEN ELSE */

DATA TOURS2;

Page 9: SAS CODES AND TRICKS

SET ATIFRAZA.TOURS;TOTALCOST=AIRCOST+20;

RUN;

DATA TOURS2;SET ATIFRAZA.TOURS;

TC=SUM(AIRCOST,20);RUN;

DATA TOURS3;SET ATIFRAZA.TOURS;IF VENDORS='hispania' then BONUS='No Bonus ';ELSE IF VENDORS='major' THEN BONUS='All People';ELSE BONUS='FOR 5+ People';RUN;

DATA TOURS3;SET ATIFRAZA.TOURS;IF VENDORS='hispania' then NO_BONUS='YES';ELSE IF VENDORS='major' THEN BONUS='YES';ELSE BONUS='Dont know';RUN;

DATA TOURS;SET ATIFRAZA.TOURS;IF VENDORS='hispania' THEN DELETE;

RUN;

DATA TOURS;SET ATIFRAZA.TOURS;TOTALCOST=AIRCOST+LANDCOST;MULTI=AIRCOST*LANDCOST;DIVIDE=AIRCOST/LANDCOST;SQUARE=ROUND(SQRT(AIRCOST),5);

RUN;

DATA TOURS;SET ATIFRAZA.TOURS;NIGHT=ROUND(NIGHTS,5);

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF BACKUPGUIDE=TOURGUIDE THEN REMARKS='Problem ';ELSE IF BACKUPGUIDE OR TOURGUIDE ='' THEN REMARKS='CHECK STATUS';ELSE REMARKS='OK';

RUN;

/* SCANNING DIFFERENT BLOCKS FROM A CHARACTER VARIABLE USING DILIMETER */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;PART1=SCAN(EVENTDESCRIPTION,2,',');

RUN;

/* SCANNING AND ALLIGHNING RIGHT THE OBSERVATIONS OF NEW VARIABLE */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;PART1=RIGHT(SCAN(EVENTDESCRIPTION,2,','));

Page 10: SAS CODES AND TRICKS

RUN;

/* CONCATINATING MORE THAN 1 VARIABLES, COMMENTS, OR ENTERING NEW VALUES WITH EXISTING VARIABLES */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;ALLGUIDES=TOURGUIDE||' and '||BACKUPGUIDE;

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;ALLGUIDES=TRIM(TOURGUIDE||' and '||BACKUPGUIDE);

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF LANDCOST=. THEN TYPE='Haaw Hayee';ELSE IF LANDCOST<500 THEN TYPE='Sasta';ELSE IF LANDCOST<1000 THEN TYPE='Guzara';ELSE TYPE='Mehnga';

RUN;

/* 28-12-2016 */

PROC PRINT DATA=ATIFRAZA.AIRTOUR;RUN;

/* REMARKS ON THE BASIS OF SOME OTHER VARIABLE */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;IF 500 <= LANDCOST <= 1000 THEN TYPE='Medium';ELSE IF 1000 < LANDCOST <= 1500 THEN TYPE='Costly';ELSE TYPE = 'Low';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF (NIGHTS > 3 OR NUMBEROFEVENTS > 5) AND (TOURGUIDE = 'lucas' OR

CITY='paris') THEN TYPE = 'Ha Ha Ha';RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF LANDCOST THEN REMARKS = 'OK ';ELSE REMARKS = 'MISSING';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF TOURGUIDE = 'Lucas' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

DATA AIRTOUR;SET ATIFRAZA.AIRTOUR;IF UPCASE(TOURGUIDE) = 'LUCAS' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

Page 11: SAS CODES AND TRICKS

RUN;

/* IF YOU DON'T KNOW THE COMPLETE NAME, THEN USE :'L' AND IT WILL READ ALL OBSERVATIONS STARTING WITH 'L' */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;IF TOURGUIDE = :'L' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

/* IF YOU WANT TO READ ALL THE OBSERVATIONS THAT ARE GREATER THAN L (MEANS M,N,O AND SO ON...) */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;IF TOURGUIDE > :'L' THEN TYPE ='GROUP A';ELSE TYPE = 'GROUP B';

RUN;

/* USE A LETTER OR SET OF LETTERS TO READ ALL THE OBSERVATIONS THAT CONTAINS THAT SET OF LETTERS */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;IF INDEX(EVENTDESCRIPTION, 'other') THEN DOUBT ='YES';ELSE DOUBT = 'NO';

RUN;

/* IF YOU DON'T KNOW THE CASE OF THE LETTER OR SET OF LETTER THAN USE UPCASE */DATA AIRTOUR;

SET ATIFRAZA.AIRTOUR;IF INDEX(UPCASE(EVENTDESCRIPTION), 'OTHER') THEN DOUBT ='YES';ELSE DOUBT = 'NO';

RUN;

/*IT WILL WRITE ALL OBSERVATIONS WITH NIGHTS > 6 IN AIRTOUR2 */DATA AIRTOUR2;

SET ATIFRAZA.AIRTOUR;IF NIGHTS >= 6;

RUN;

/* SEDING DATA OF 1 DATASET IN 2 NEW DATASETS USING IF THEN ELSE */DATA AIRTOUR1 AIRTOUR2;

SET ATIFRAZA.AIRTOUR;IF NIGHTS >= 6 THEN OUTPUT AIRTOUR1;ELSE OUTPUT AIRTOUR2;

RUN;

DATA AIRTOUR1 AIRTOUR2;SET ATIFRAZA.AIRTOUR;IF NIGHTS >=6 THEN OUTPUT AIRTOUR1;IF TOURGUIDE ='Lucas' THEN OUTPUT AIRTOUR2;

RUN;

/* SENDING DATA TO 2 NEW DATASETS USING IF THEN ELSE AND CREATING A NEW VARIABLE IN NEW DATASETS */DATA AIRTOUR1 AIRTOUR2;

SET ATIFRAZA.AIRTOUR;TOTALNIGHTS=NIGHTS+1;IF TOURGUIDE ='Lucas' THEN OUTPUT AIRTOUR1;

Page 12: SAS CODES AND TRICKS

ELSE OUTPUT AIRTOUR2;RUN;

PROC SORT DATA=ATIFRAZA.airtour;BY CITY;

RUN;

/* SORTING DATA AND FINDING OUT FIRST AND LAST OBSERVATIONS BY TYPE */DATA ATIFRAZA.CARS;

SET SASHELP.CARS;RUN;

PROC SORT DATA=ATIFRAZA.CARS;BY TYPE;

RUN;

PROC MEANS DATA=ATIFRAZA.CARS;BY ORIGIN TYPE;

RUN;

DATA CARS;SET ATIFRAZA.CARS;BY TYPE;FIRSTTYPE=FIRST.TYPE;LASTTYPE=LAST.TYPE;

RUN;

/* USING FITST AND LAST OBSERVATION AND SEE WHICH MODEL AND TYPE IT IS */DATA CARS2;

SET CARS;IF FIRSTTYPE=1 THEN CARSTYPE=TYPE||' '||'START'||MODEL;

RUN;

PROC PRINT DATA=CARS2;RUN;

PROC IMPORT DATAFILE="/folders/myfolders/ATIFRAZA/DISCOUNT.xlsx" OUT=ATIFRAZA.DISCOUNT DBMS=XLSX REPLACE;

RUN;

/* TO DELETE DUPLICATE OBSERVATIONS */PROC SORT DATA=ATIFRAZA.AIRTOUR OUT=ATIFRAZA.ABC NODUPRECS;BY CITY;RUN;

/* MERGING DATA SETS */DATA NEW;

SET ATIFRAZA.DATA6 ATIFRAZA.DATA7;RUN;

DATA NEW;SET ATIFRAZA.DATA6 ATIFRAZA.DATA7;BY YEAR;

RUN;

Page 13: SAS CODES AND TRICKS

DATA MERGE;MERGE ATIFRAZA.DATA6 ATIFRAZA.DATA7;

RUN;

DATA MERGE;MERGE ATIFRAZA.DATA6 ATIFRAZA.DATA7;BY YEAR;

RUN;

DATA ONE2ONE;MERGE ATIFRAZA.CLASS(DROP=YEAR MAJOR) ATIFRAZA.CLASS2(DROP=YEAR MAJOR

RENAME=(NAME=NAME2));RUN;

DATA FINCOM;MERGE ATIFRAZA.FINANCE ATIFRAZA.COMPANY;BY NAME;

RUN;

DATA FINCOM;MERGE ATIFRAZA.FINANCE ATIFRAZA.COMPANY;BY IDNUMBER;

RUN;

PROC SORT DATA=ATIFRAZA.SHOES;BY TYPE;RUN;PROC SORT DATA=ATIFRAZA.DISCOUNT;BY TYPE;RUN;

DATA ATIFRAZA.SHOES;SET ATIFRAZA.SHOES;IF TYPE='C-train' THEN TYPE='C-Train';

RUN;DATA SHOESS;

MERGE ATIFRAZA.SHOES ATIFRAZA.DISCOUNT;BY TYPE;

RUN;

PROC IMPORT DATAFILE="/folders/myfolders/ATIFRAZA/DISCOUNT.xlsx" OUT=ATIFRAZA.DISCOUNT DBMS=XLSX REPLACE;

RUN;

/* TO DELETE DUPLICATE OBSERVATIONS */PROC SORT DATA=ATIFRAZA.AIRTOUR OUT=ATIFRAZA.ABC NODUPRECS;BY CITY;RUN;

/* CREATING NEW DATA SETS FROM OLD DATASETS USING MERGE, IF THEN AND ELSE */

/* STAKING 2 DATASETS */DATA NEW;

SET ATIFRAZA.DATA6 ATIFRAZA.DATA7;RUN;

Page 14: SAS CODES AND TRICKS

/* STAKING 2 DATASETS BY YEAR */DATA NEW;

SET ATIFRAZA.DATA6 ATIFRAZA.DATA7;BY YEAR;

RUN;

/* MERGING 2 DATASETS SIDE-BY-SIDE */DATA MERGE;

MERGE ATIFRAZA.DATA6 ATIFRAZA.DATA7;RUN;

/* MERGING 2 DATASETS SIDE-BY-SIDE BY YEAR*/DATA MERGE;

MERGE ATIFRAZA.DATA6 ATIFRAZA.DATA7;BY YEAR;

RUN;

DATA ONE2ONE;MERGE ATIFRAZA.CLASS(DROP=YEAR MAJOR) ATIFRAZA.CLASS2(DROP=YEAR MAJOR

RENAME=(NAME=NAME2));RUN;

DATA FINCOM;MERGE ATIFRAZA.FINANCE ATIFRAZA.COMPANY;BY NAME;

RUN;

DATA FINCOM;MERGE ATIFRAZA.FINANCE ATIFRAZA.COMPANY;BY IDNUMBER;

RUN;

PROC SORT DATA=ATIFRAZA.SHOES;BY TYPE;RUN;

PROC SORT DATA=ATIFRAZA.DISCOUNT;BY TYPE;RUN;

DATA SHOESS;MERGE ATIFRAZA.SHOES ATIFRAZA.DISCOUNT;BY TYPE;

RUN;

/* MERGING 2 DATA SETS AND CREATING NEW VARIABLES IN THE NEW DATASET */DATA SHOESS;

MERGE ATIFRAZA.SHOES ATIFRAZA.DISCOUNT;BY TYPE;DAMOUNT=ADJUSTMENT*REGULARPRICE;NETPRICE=REGULARPRICE-DAMOUNT;

RUN;

/* CALCULATING MEAN AND STORING IT IN A NEW DATASET */PROC MEANS DATA=SHOESS;

VAR NETPRICE;BY TYPE;OUTPUT OUT=NETMEAN SUM(NETPRICE)=SUMM;

Page 15: SAS CODES AND TRICKS

RUN;

/* NOW JOINING THE NEW DATASET INTO OLD BY TYPE */DATA SHOESS (DROP= _TYPE_ _FREQ_);

MERGE ATIFRAZA.SHOES NETMEAN;BY TYPE;

RUN;

/* USING -- TO ASSIGN LIST OF VARIABLES (ITEM13 TO ITEM26) */DATA ATIFRAZA.PCA3 (KEEP=ITEM13--ITEM26);

SET ATIFRAZA.PCA2;RUN;

/* PRINCIPAL COMPONENTS ANALYSIS */PROC FACTOR DATA=ATIFRAZA.PCA3

SIMPLEROUNDSCREEFLAG=.4METHOD=PRINPRIORS=ONEROTATE=VARIMAXNFACTORS=2OUT=ATIFRAZA.PCARESULTS (RENAME=(FACTOR1=INS_CHAR FACTOR2=INS_STU_REL));

RUN;

/* E . X . T . R . A . */

DATA PRACTICE.NAMES;INPUT NAME $ 1-21 DATE MMDDYY10. ENGLISH 32-34 MATHS 36-38 SCIENCE 41-43;FORMAT DATE DATE8.;DATALINES;

Muhammad Atif Raza 10282016 059 075 088Muhamad Mursaleen Ali 12252015 063 077 090Chaudhry Awais Khalid 05152014 055 085 065Miss Beenish Bashir 10132014 085 086 075Muhammad Saad Baloch 07272015 055 069 099Raja Mustansar Ali 08282017 051 059 075;RUN;

DATA SCANN;SET PRACTICE.NAMES;APA= SCAN(NAME,-1,' ')||', '||SCAN(NAME,-2,' ');TOTALMARKS = ENGLISH+MATHS+SCIENCE;PERCENTAGE= ROUND((TOTALMARKS/300)*100,.01);IF PERCENTAGE >= 80 THEN GRADE = 'A';ELSE IF PERCENTAGE >= 70 THEN GRADE = 'B';ELSE IF PERCENTAGE >= 60 THEN GRADE = 'C';ELSE GRADE = 'FAIL';

RUN;

Page 16: SAS CODES AND TRICKS

PAPERSDATA HAHA;

SET PRACTICE.TOURS;IF _N_ NE 3 THEN DELETE;

RUN;

DATA BASEBALL;SET SASHELP.BASEBALL;RUN;

PROC MEANS DATA=BASEBALL NMISS;RUN;

PROC SORT DATA=baseball;BY TEAM;

PROC MEANS DATA=BASEBALL;VAR SALARY;BY TEAM;OUTPUT OUT=BS MEAN=MEAN;

RUN;

DATA NEWDATA (DROP=_FREQ_ _TYPE_);MERGE BASEBALL BS;BY TEAM;IF SALARY=. THEN SALARY=MEAN;

RUN;

PROC MEANS DATA=NEWDATA NMISS;RUN;

DATA PRACTICE.FLOWER;SET SASHELP.IRIS;

RUN;

PROC CORR DATA=PRACTICE.FLOWER PLOTS=MATRIX(HISTOGRAM);VAR PETALLENGTH PETALWIDTH SEPALLENGTH SEPALWIDTH;

RUN;

DATA PRACTICE.DFLOWER;SET PRACTICE.FLOWER;IF SPECIES='Setosa' THEN DSETOSA=1;ELSE DSETOSA=0;IF SPECIES='Versicolor' THEN DVERSI=1;ELSE DVERSI=0;

RUN;

PROC REG DATA=PRACTICE.DFLOWER;MODEL PETALLENGTH=PETALWIDTH DSETOSA DVERSI;OUTPUT OUT=PRACTICE.FLOWERDIAG (KEEP=PETALLENGTH PETALWIDTH DSETOSA DVERSI

LEV RSTUDENT CD DFFIT) h=LEVrstudent=RSTUDENTcookd=CDDFFITS=DFFIT;

RUN;

Page 17: SAS CODES AND TRICKS

PROC PRINT DATA=PRACTICE.FLOWERDIAG;WHERE ABS(RSTUDENT)>2;

RUN;

PROC PRINT DATA=PRACTICE.FLOWERDIAG;WHERE LEV>(2*3+2)/150;

RUN;

PROC PRINT DATA=PRACTICE.FLOWERDIAG;WHERE CD>4/150;

RUN;

PROC PRINT DATA=PRACTICE.FLOWERDIAG;WHERE ABS(DFFIT)>(2*SQRT(3/150));

RUN;

PROC PRINT DATA=PRACTICE.FLOWERDIAG;WHERE LEV>(2*3+2)/150 AND ABS(RSTUDENT)>2;

RUN;

PROC REG DATA=PRACTICE.FLOWERDIAG;MODEL PETALLENGTH=PETALWIDTH DSETOSA DVERSI;WHERE ABS(RSTUDENT)<2;RUN;

DATA REMARKS;SET SASHELP.HEART;IF STATUS='Alive' THEN REMARKS= 'CHL = '||CHOL_STATUS||' BP= '||

BP_STATUS||' WGT = '||WEIGHT_STATUS||' SMK = '||SMOKING_STATUS;ELSE IF STATUS='Dead' THEN REMARKS= DEATHCAUSE;

RUN;

PROC PRINT DATA=REMARKS;RUN;

PROC REG DATA=SASHELP.IRIS;MODEL PETALLENGTH=PETALWIDTH SEPALLENGTH SEPALWIDTH;OUTPUT OUT=PRACTICE.ABCD PREDICTED=PHAT;

RUN;

DATA PRACTICE.RMSE;SET PRACTICE.ABCD;Y1M2=((PETALLENGTH-PHAT)*(PETALLENGTH-PHAT)/150);

RMSE=SQRT(9.90197);RUN;

PROC PRINT DATA=PRACTICE.RMSE;VAR Y1M2;SUM Y1M2;

RUN;

PROC TABULATE DATA=PRACTICE.RMSE OUT=PRACTICE.TOTAL (DROP=_TYPE_ _PAGE_ _TABLE_);

VAR Y1M2;TABLE Y1M2;

RUN;

Page 18: SAS CODES AND TRICKS

DATA PRACTICE.ABCD;SET PRACTICE.TOTAL

RMSE=SQRT(Y1M2_SUM);RUN;DATA PRACTICE.SUBMISSION;

SET PRACTICE.RMSE;SUM Y1M2;

RUN;DATA

PROJECTDATA PROJECT.RAWDATA;

SET PROJECT.THESIS;DROP Adm_Pur Dev_Pur Dis_Jus Inf_Jus Injust Inp_Jus Pro_Jus Pur_Less

Rat_Fot TI DPAS JS IPAS;RUN;

/* PROC CONTENTS ON RAW DATA FILE */PROC CONTENTS DATA=PROJECT.RAWDATA;RUN;

/* CREATING A NEW DATASET AND ADDING A NEW VARIABLE AND USING PUT TO SPECIFY ITS TYPE AS CHARACTER */DATA PROJECT.RAWDATA;SET PROJECT.RAWDATA;BPSS= PUT(BPS, $6.);RUN;/* CREATING A NEW DATA SET AND SETTING THE RECENTLY CREATED DATASET AND THEN DROPPING THE OLD BPS VARIABLE AND RENAMMING THE NEW VARIABLE AS OLD */DATA PROJECT.RAWDATA (DROP=BPS RENAME=(BPSS=BPS));

SET PROJECT.RAWDATA;RUN;

/* PROC UNIVARIATE ON RAW DATA FILE TO SEE IF THERE IS ANY VALUEWHICH SHOULD BE TREATED AT THIS STAGE OR NOT*/PROC UNIVARIATE DATA=PROJECT.RAWDATA;RUN;

/* COMPUTING ITEMS TO MAKE VARIABLES FOR FURTHER EXPLORATION */DATA PROJECT.THESIS1;

SET PROJECT.RAWDATA;Admin_Pur=(AP1 + AP2 + AP3 + AP4)/4;Dev_Pur=(DP1 + DP2 + DP3 + DP4 + DP5)/5;Pur_less=(Admin_Pur + Dev_Pur)/2;

Inf_Jus=(IFJ1 + IFJ2 + IFJ3 + IFJ4)/4;Inp_Jus=(IPJ1 + IPJ2 + IPJ3 + IPJ4)/4;Pro_Jus=(PJ1 + PJ2 + PJ3 + PJ4 + PJ5)/5;Dis_Jus=(DJ1 + DJ2 + DJ3 + DJ4)/4;Injust=(Inf_Jus + Inp_Jus + Pro_Jus + Dis_Jus)/4;

RAT=(RF1 + RF2 + RF3 + RF4 + RF5)/5;

Page 19: SAS CODES AND TRICKS

IPAS=(Pur_Less + Injust + RAT)/3;

DPAS=(DPAS1 + DPAS2 + DPAS3 + DPAS4 + DPAS5 + DPAS6 + DPAS7)/7;

JS=(JS1 + JS2 + JS3 + JS4 + JS5 + JS6 + JS7 + JS8)/8;

TI=(TI1 + TI2 + TI3 + TI4 + TI5 + TI6 + TI7 + TI8)/8;RUN;

/* LABELING THE VARIABLES ACCORDINGLY */DATA PROJECT.THESIS1;

SET PROJECT.THESIS1;label AGE='Age';label APP='Type of Appointment';label GND='Gender';label ORG='Name of Organization';label ROL='Role in PAS';label BPS='Basic Pay Scale';label Admin_Pur='Administrative Purposes';label Dev_Pur='Developmental Purposes';label Pur_less='Purposelessness of PAS';label Inf_Jus='Informational Justice';label Inp_Jus='Interpersonal Justice';label Pro_Jus='Procedural Justice';label Dis_Jus='Distributive Justice';label Injust='Injustice in PAS';label RAT='Psychometric soundness of Rating Format';label IPAS='Ineffectiveness of PAS';label DPAS='Dissatisfaction with PAS';label JS='Job Security';label TI='Turnover Intentions';

RUN;

PROC CONTENTS DATA=PROJECT.THESIS1;RUN;

/* PROC UNIVARIATE OF 4 MAIN VARIABLES */PROC UNIVARIATE DATA=project.thesis1;

VAR IPAS DPAS JS TI;RUN;

/* PROC MEANS ON 4 MAIN VARIABLES */PROC MEANS DATA=project.thesis1 NMISS MEAN kurtosis skewness STD MAXDEC=3;

VAR Pur_less Injust RAT IPAS DPAS JS TI;RUN;

/* PROC CORR ALPHA ON ALL ITEMS VARIABLE-WISE */PROC CORR DATA=PROJECT.THESIS1 ALPHA;

VAR AP1 AP2 AP3 AP4;RUN;

PROC CORR DATA=PROJECT.THESIS1 ALPHA;VAR DP1 DP2 DP3 DP4 DP5;

RUN;

Page 20: SAS CODES AND TRICKS

PROC CORR DATA=PROJECT.THESIS1 ALPHA;VAR DJ1 DJ2 DJ3 DJ4 IFJ1 IFJ2 IFJ3 IFJ4 IPJ1 IPJ2 IPJ3 IPJ4 PJ1 PJ2 PJ3

PJ4 PJ5;RUN;

PROC CORR DATA=PROJECT.THESIS1 ALPHA;VAR RF1 RF2 RF3 RF4 RF5;

RUN;

PROC CORR DATA=PROJECT.THESIS1 ALPHA;VAR DPAS1 DPAS2 DPAS3 DPAS4 DPAS5 DPAS6 DPAS7;

RUN;

PROC CORR DATA=PROJECT.THESIS1 ALPHA;VAR TI1 TI2 TI3 TI4 TI5 TI6 TI7 TI8;

RUN;

/* PROC CORR ALPHA ON ALL ITEMS IN 1 GO */PROC CORR DATA=PROJECT.THESIS1 ALPHA;

VAR AP1 AP2 AP3 AP4 DP1 DP2 DP3 DP4 DP5 DJ1 DJ2 DJ3 DJ4 IFJ1 IFJ2 IFJ3 IFJ4 IPJ1 IPJ2 IPJ3 IPJ4 PJ1 PJ2 PJ3 PJ4 PJ5 RF1 RF2 RF3 RF4 RF5 DPAS1 DPAS2 DPAS3 DPAS4 DPAS5 DPAS6 DPAS7 TI1 TI2 TI3 TI4 TI5 TI6 TI7 TI8;RUN;

DATA PROJECT.THESIS2 ;SET PROJECT.THESIS1;KEEP AGE APP BPS GND ORG ROL Injust Pur_less RAT IPAS DPAS JS TI;

RUN;

/* PROC CONTENTS AGAIN ON ALL VARIABLES */PROC CONTENTS DATA=PROJECT.THESIS2;RUN;

/* PROC CORR ON MAIN VARIABLES */PROC CORR DATA=PROJECT.THESIS2 PLOTS=matrix(HISTOGRAM);

VAR IPAS DPAS JS TI;RUN;

/* PROC CORR ON ALL VARIABLES */PROC CORR DATA=PROJECT.THESIS2;RUN;

/* PROC MEANS ON 4 MAIN VARIABLES */PROC MEANS DATA=project.thesis1 NMISS MEAN kurtosis skewness STD MAXDEC=3;

VAR Pur_less Injust RAT IPAS DPAS JS TI;RUN;

/* GENERATING 2 WAY CONTINGENCY TABLE */PROC FREQ DATA=PROJECT.THESIS2;

TABLES BPS*GND;TITLE '2-CONTINGENCY TABLE OF GENDER AND BPS';

RUN;

Page 21: SAS CODES AND TRICKS

/* GENERATING 2 WAY CONTINGENCY TABLE */PROC FREQ DATA=PROJECT.THESIS2;

TABLES GND*ORG;TITLE '2-WAY CONTINGENCY TABLE OF GENDER AND ORGANIZATION';

RUN;

/* PROC CORR ON MAIN VARIABLES */PROC CORR DATA=PROJECT.THESIS2 PLOTS=matrix(HISTOGRAM);

VAR IPAS DPAS JS TI;RUN;

/* RUNNING 3 PATHS (IV TO M) (IV TO DV) (M TO DV) */PROC CALIS DATA=PROJECT.THESIS2; PATH IPAS ===> DPAS,

IPAS DPAS ===> TI;RUN;

/* COMPUTING A NEW VARIABLE (INTERACTION) USING ASSIGNMENT STATEMENT */DATA PROJECT.THESIS3; SET PROJECT.THESIS2; DPASXJS=DPAS*JS;RUN; /* RUNNING PROC COLIS WITH INTERACTION VARIABLE */

PROC CALIS DATA=PROJECT.THESIS3; PATH DPASXJS ===> TI;RUN;

/* RUNNING 3 PATHS (IV TO M) (IV TO DV (M TO DV) */PROC CALIS DATA=PROJECT.THESIS2; PATH IPAS ===> DPAS, JS ===> TI, IPAS DPAS ===> TI;RUN;

/* ========================================================== */

PROC CORR DATA=PROJECT.THESIS3 PLOTS=MATRIX(HISTOGRAM);VAR TI PUR_LESS INJUST DPAS JS;

RUN;

PROC REG DATA=PROJECT.MOC;MODEL TI= PUR_LESS DPAS;MODEL TI= INJUST DPAS;MODEL TI= RAT DPAS;

RUN;

PROC CALIS DATA=PROJECT.MALE;PATH PUR_LESS ==> DPAS TI,

DPAS ==> TI, INJUST ==> DPAS TI, RAT ==> DPAS TI;

Page 22: SAS CODES AND TRICKS

RUN;

DATA PROJECT.THESIS3;SET PROJECT.THESIS2;

IF ROL='Raitee' THEN DELETE;RUN;

DATA PROJECT.MALE PROJECT.FEMALE;SET PROJECT.THESIS2;IF GND='Male' THEN OUTPUT PROJECT.MALE;ELSE OUTPUT PROJECT.FEMALE;

RUN;

PROC CORR DATA=PROJECT.THESIS;VAR BPS DPAS IPAS JS TI;RUN;

DATA PROJECT.GENDER;SET PROJECT.THESIS2;IF GND='Male' THEN GENDER=1;ELSE GENDER=2;

RUN;

PROC CORR DATA=PROJECT.ORG PLOTS=MATRIX(HISTOGRAM);VAR ORGANIZATION IPAS DPAS JS TI;

RUN;

DATA PROJECT.ORG;SET PROJECT.THESIS2;IF ORG='NIH' THEN ORGANIZATION=1;ELSE IF ORG='NARC' THEN ORGANIZATION=2;ELSE ORGANIZATION=3;

RUN;

PROC MEANS DATA=PROJECT.THESIS2 MAXDEC=2;VAR PUR_LESS INJUST RAT IPAS DPAS JS TI;CLASS GND;

RUN;