SAS analysis of vehicle data including descriptive statistics, frequency tables, and merging datasets
1. PROC CONTENTS
DATA=ATIFRAZA.PRACTICE;
RUN;
PROC MEANS DATA=ATIFRAZA.PRACTICE
NMISS N MEAN STD SKEW KURT MIN MAX
CSS MAXDEC=3;
RUN;
DATA ATIFRAZA.PRACTICE;
SET ATIFRAZA.PRACTICE;
LABEL INVOICE = 'Price';
RUN;
PROC CONTENTS
DATA=ATIFRAZA.PRACTICE;
RUN;
PROC UNIVARIATE
DATA=ATIFRAZA.PRACTICE;
VAR CYLINDERS;
RUN;
PROC MEANS DATA=ATIFRAZA.PRACTICE
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.PRACTICE;
RUN;
PROC FREQ DATA=ATIFRAZA.PRACTICE;
TABLE TYPE*ORIGIN/CHISQ;
TABLE TYPE*ORIGIN/
PLOT=FREQPLOT(TYPE=DOT);
TITLE 'TYPE AND ORIGIN TABLE';
RUN;
PROC FREQ DATA=ATIFRAZA.PRACTICE;
TABLE MAKE ORIGIN;
RUN;
PROC FREQ DATA=ATIFRAZA.PRACTICE;
TABLE MAKE/
PLOT=FREQPLOT(TYPE=DOT);
WEIGHT CYLINDERS;
RUN;
proc print data=atifraza.practice;
run;
PROC FREQ DATA=ATIFRAZA.PRACTICE;
TABLE Type*Origin/CHISQ;
TABLE Type*Origin/
PLOT=FREQPLOT(TYPE=DOT);
WEIGHT INVOICE;
TITLE 'TYPE AND ORIGIN TABLE';
RUN;
PROC UNIVARIATE
DATA=ATIFRAZA.PRACTICE
WINSORIZED=10
TRIMMED=10
ROBUSTSCALE;
VAR CYLINDERS;
RUN;
PROC STDIZE DATA=atifraza.practice
OUT=ATIFRAZA.PRACTICEOK
REPONLY MISSING=MEAN;
VAR CYLINDERS;
BY NOTSORTED TYPE;
RUN;
PROC CORR DATA=atifraza.practiceOK
pearson PLOTS=matriX(HISTOGRAM);
RUN;
/* MERGING TWO TABLES */
data class;
2. input Name $ 1-25 Year $ 26-34 Major
$ 36-50;
datalines;
Abbott, Jennifer first
Carter, Tom third
Theater
Mendoza, Elissa fourth
Mathematics
Tucker, Rachel first
Uhl, Roland second
Wacenske, 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
D
Carter, Tom third
T
Mendoza, fourth
M
Tucker, Ra first
A
Uhl, Roland second
B
Wacenske, Maurice third
C
;
run;
proc print data=GRADE;
title 'Acting Class Roster';
run;
proc sort data=class;
by major;
run;
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.PRACTICE
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.PRACTICE
(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.PRACTICE;
if CYLINDERS>8 then
STATUS="LARGE";
3. 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
02 AHMED KHAN 02242011 75 B
03 BINA ALI 08302006 60 C
04 MARIA ZIA 07212004 89 A
;
RUN;
DATA ATIFRAZA.MARKS2;
SET ATIFRAZA.MARKS;
F=SCAN(NAME,+1);
L=SCAN(NAME,+2);
NAMES=L||(",")||F;
RUN;