0% found this document useful (0 votes)
47 views6 pages

Here Is The Output Produced by The Proc Print Statement Above

The document discusses reading in data from external files and printing the first few observations of datasets using PROC PRINT in SAS. It also demonstrates merging two datasets together using a DATA step and shows examples of filtering datasets using WHERE clauses with operators like =, <=, >=, IN, and ^= in PROC PRINT, PROC MEANS, and PROC FREQ statements. New variables are created based on the values of existing variables.

Uploaded by

ddlalu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views6 pages

Here Is The Output Produced by The Proc Print Statement Above

The document discusses reading in data from external files and printing the first few observations of datasets using PROC PRINT in SAS. It also demonstrates merging two datasets together using a DATA step and shows examples of filtering datasets using WHERE clauses with operators like =, <=, >=, IN, and ^= in PROC PRINT, PROC MEANS, and PROC FREQ statements. New variables are created based on the values of existing variables.

Uploaded by

ddlalu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

DATA cars1;

INPUT make $ model $ mpg weight price;


CARDS;
AMC Concord 22 2930 4099
AMC Pacer 17 3350 4749
AMC Spirit 22 2640 3799
Buick Century 20 3250 4816
Buick Electra 15 4080 7827
;
RUN;
After reading in the data with a data step, it is usually a good idea to print the first few cases of your dataset to check
that things were read correctly.

title "cars1 data";


PROC PRINT DATA=cars1(obs=5);
RUN

Here is the output produced by the proc print statement above.


cars1 data
OBS MAKE MODEL MPG WEIGHT PRICE
1 AMC Concord 22 2930 4099
2 AMC Pacer 17 3350 4749
3 AMC Spirit 22 2640 3799
4 Buick Century 20 3250 4816
5 Buick Electra 15 4080 7827
DATA cars5;
INFILE "c:\carsdata\cars5.dat" delimiter=',';
INPUT make $ model $ mpg weight price;
RUN;

TITLE "cars5 data";


PROC PRINT DATA=cars5(OBS=5);
RUN;

cars5 data

OBS MAKE MODEL MPG WEIGHT PRICE


1 AMC Concord 22 2930 4099
2 AMC Pacer 17 3350 4749
3 AMC Spirit 22 2640 3799
4 Buick Century 20 3250 4816
5 Buick Electra 15 4080 7827
data prep;
length name $16;
set sashelp.class;
gender = sex; run;
DATA= specifies the dataset to be processed, PROMPT invokes the prompting mode, sort of like a wizard
NOWINDOWS suppresses the REPORT window and directs the report to the output window REPORT = specifies a
stored report to be used in generating a new report OUTREPT= names a location to store the report OUT= creates a
SAS data set HEADLINE creates a horizontal line between the column headers and the body of the report HEADSKIP
creates a blank line between the column headers and the body of the report

PROC REPORT NOWD DATA=SURVEY HEADLINE HEADSKIP CENTER MISSING;


COLUMNS FNAME LINIT NAME SEX ACADYEAR GPA AGE
('-ANNUAL AMOUNT SPENT ON-' BOOKS FOOD ENT TOTAL);
DEFINE FNAME / DISPLAY NOPRINT;
DEFINE LINIT / DISPLAY NOPRINT;
DEFINE SEX / DISPLAY FORMAT=$SEXFMT. WIDTH=6;
DEFINE ACADYEAR / DISPLAY FORMAT=$YEARFMT. WIDTH=9 'ACADEMIC/YEAR';
DEFINE GPA / ANALYSIS FORMAT=3.1 WIDTH=3;
DEFINE AGE / ANALYSIS FORMAT=3. WIDTH=3;
DEFINE BOOKS / ANALYSIS FORMAT=DOLLAR6. WIDTH=7 'BOOKS';
DEFINE FOOD / ANALYSIS FORMAT=DOLLAR6. WIDTH=6 'FOOD';
DEFINE ENT / ANALYSIS FORMAT=DOLLAR6. WIDTH=11 'ENTERTAIN';
DEFINE NAME / COMPUTED WIDTH=10;
DEFINE TOTAL / COMPUTED FORMAT=DOLLAR6. WIDTH=7 'TOTAL';
COMPUTE NAME / CHAR LENGTH=10;
NAME=TRIM(FNAME) || ' ' || LINIT || '.';
ENDCOMP;
COMPUTE TOTAL;
TOTAL = SUM(BOOKS.SUM, FOOD.SUM, ENT.SUM);
ENDCOMP;
RUN;

PROC REPORT NOWD DATA=SURVEY HEADLINE HEADSKIP CENTER MISSING;


COLUMNS FNAME LINIT NAME SEX ACADYEAR GPA AGE
('-ANNUAL AMOUNT SPENT ON-' BOOKS FOOD ENT TOTAL);
DEFINE FNAME / DISPLAY NOPRINT;
DEFINE LINIT / DISPLAY NOPRINT;
DEFINE SEX / DISPLAY FORMAT=$SEXFMT. WIDTH=6;
DEFINE ACADYEAR / DISPLAY FORMAT=$YEARFMT. WIDTH=9 'ACADEMIC/YEAR';
DEFINE GPA / ANALYSIS FORMAT=3.1 WIDTH=3;
DEFINE AGE / ANALYSIS FORMAT=3. WIDTH=3;
DEFINE BOOKS / ANALYSIS FORMAT=DOLLAR6. WIDTH=7 'BOOKS';
DEFINE FOOD / ANALYSIS FORMAT=DOLLAR6. WIDTH=6 'FOOD';
DEFINE ENT / ANALYSIS FORMAT=DOLLAR6. WIDTH=11 'ENTERTAIN';
DEFINE NAME / COMPUTED WIDTH=10;
DEFINE TOTAL / COMPUTED FORMAT=DOLLAR6. WIDTH=7 'TOTAL';
COMPUTE NAME / CHAR LENGTH=10;
NAME=TRIM(FNAME) || ' ' || LINIT || '.';
ENDCOMP;
COMPUTE TOTAL;
TOTAL = SUM(BOOKS.SUM, FOOD.SUM, ENT.SUM);
ENDCOMP;
RUN;

PROC SORT DATA = SURVEY;


BY ACADYEAR;
FORMAT ACADYEAR $YEARFMT.;
RUN;
The REPORT procedure also has many options that can be used. Some of the most often used options are:
DATA= specifies the dataset to be processed,
PROMPT invokes the prompting mode, sort of like a wizard
NOWINDOWS suppresses the REPORT window and directs the report to the output window
REPORT = specifies a stored report to be used in generating a new report
OUTREPT= names a location to store the report
OUT= creates a SAS data set
HEADLINE creates a horizontal line between the column headers and the body of the report
HEADSKIP creates a blank line between the column headers and the body of the report

GROUP - puts observations into categories


DISPLAY - displays values for each observation
ANALYSIS - contributes values to a calculation or statistic
ORDER - defines the order of the report rows
ACROSS - creates columns for each of its values
COMPUTED - its values are created in a COMPUTE block.

Data set one Data set two

ID A B ID C

10 1 2 10 0
20 3 4 20 5
30 5 6 30 7

This data step does a merge of data set one and two by ID:
data three;
merge one two;
by id;
run;

PROC PRINT DATA=auto;


WHERE rep78 >= 3;
VAR make rep78;
RUN;

PROC PRINT DATA=auto;


WHERE rep78 >= 3;
VAR make rep78;
RUN;

PROC FREQ DATA=auto;


TABLES rep78*foreign ;
RUN;

PROC FREQ DATA=auto;


WHERE rep78 >= 3;
TABLES rep78*foreign ;
RUN;
PROC PRINT DATA=auto;
WHERE rep78 <= 2;
VAR make price rep78 ;
RUN;
PROC PRINT DATA=auto;
WHERE rep78 <= 2 and rep78 ^= . ;
VAR make price rep78 ;
RUN;

PROC PRINT DATA=auto;


WHERE . < rep78 <= 2;
VAR make price rep78 ;
RUN;
PROC MEANS DATA=auto;
WHERE rep78 = 1 OR rep78 = 2 ;
VAR price ;
RUN;
PROC MEANS DATA=auto;
WHERE rep78 = 3 or rep78 = 4 or rep78 = 5 ;
VAR price ;
RUN;
Or:

PROC MEANS DATA=auto;


WHERE 3 <= rep78 <= 5 ;
VAR price ;
RUN;
Or: The where statement also works with the in operator.

PROC MEANS DATA=auto;


WHERE rep78 in (3,4,5) ;
VAR price ;
RUN;

DATA auto2;
SET auto;
repair = .;
IF (rep78=1) or (rep78=2) THEN repair = 1;
IF (rep78=3) THEN repair = 2;
IF (rep78=4) or (rep78=5) THEN repair = 3;
himpg = .;
IF (mpg <= 20) THEN himpg = 0;
IF (mpg > 20) THEN himpg = 1;
RUN;

DATA auto;
INPUT make $ price mpg rep78 foreign;
cost = ROUND( price / 1000 );
mpgptd = mpg / price;
DATALINES;
AMC 4099 22 3 0
;
RUN;
PROC PRINT DATA=auto;
RUN;

You might also like