You are on page 1of 25

SASTechies

info@sastechies.com
http://www.sastechies.com
 DATA steps typically create or modify SAS data sets, but they can also be
used to produce custom-designed reports. For example, you can use DATA
steps to

◦ put your data into a SAS data set
◦ compute the values for new variables
◦ check for and correct errors in your data
◦ produce new SAS data sets by sub-setting, merging, and updating existing data
sets.

 PROC (procedure) steps typically analyze and process data in the form
of a SAS data set, and they sometimes create SAS data sets that contain
the results of the procedure. PROC steps control a library of prewritten
routines (procedures) that perform tasks on SAS data sets, such as listing,
sorting, and summarizing data. For example, you can use PROC steps to
◦ print a report
◦ produce descriptive statistics
◦ create a tabular report
◦ produce plots and charts.

SAS Techies 2009 11/13/09 2
Data numbers; Start of a Datastep
X1=1; Assigning values to x1
x2=2; x2
Run; End the datastep

Proc print Issue a Print Procedure
data=numbers; to print the dataset
numbers
Run;
End the Run statement

SAS Techies 2009 11/13/09 3
 C, C++, Java like syntax
 Every Statement ends with ;
 Datastep starts with the keyword data followed
by the dataset name.
 Datastep ends when run; is found or any other
Data or Proc is found else the Status on the
window would show “Datastep or Proc Running”
 It usually begins with a SAS keyword
 they can begin and end anywhere on a line
 one statement can continue over several lines
 several statements can be on a line.

SAS Techies 2009 11/13/09 4
 Log would show the entire program with the
Run time i.e. Real time and the CPU Time.

 Any errors or any output with PUT or Macro
statements

SAS Techies 2009 11/13/09 5
 Output Window would show the output of the
Procedure in a Listing or HTML Format, date,
time and SAS System message.

 Results Window would show any results
produced

 Explorer window would show any dataset
prepared in that step.

SAS Techies 2009 11/13/09 6
 To define a library, you assign it a
library name and specify a path
Libname libref “C:\temp”;
 Open the library in Explorer would
show all
◦ Datasets
◦ Catalogs
◦ macro compilation
◦ views
 When you delete a library you
delete the reference to SAS engine
and Not the Contents at that path.
To delete the contents select all of
them and delete.
 Note: libref is 1 to 8 characters
long only and remain in effect until
you modify them, cancel them, or
end your SAS session

SAS Techies 2009 11/13/09 7
SAS file in any library except Work indicates that the SAS file is stored permanently
Permanent
SAS Files

Clinic . Admit Clinic . Admit2

Temporary
SAS File Temporary
SAS File,
One-Level
Name

Work . Test Test

SAS Techies 2009 11/13/09 8
Datalines / cards statement
-- Indicates that data lines follow

SAS Techies 2009 11/13/09 9
 Set Statement
--Reads an observation from one or more already existing SAS data
sets
-- used to copy / subset of observations to perform additional
operations.
Data work.ins;
set clinic.insure(where=(weight>150));
if weight > 150 then Overweight=‘Yes’; run;

SAS Techies 2009 11/13/09 10
 a SAS data set is a file consisting of two
parts: a descriptor portion and a data
portion Data Set Name:
Member Type:
CLINIC.INSURE
DATA
Engine: V8
Created: 10:05 Tuesday,
March 30, 1999
Observations: 21
Variables: 7
Indexes: 0
Observation Length: 64

 Name  Sex   Age   Weight 

 Jones   M   48   128.6
 Laverne    M   58   158.3

 Jaffe   F   .    115.5
 Wilson   M   28   170.1

SAS Techies 2009 11/13/09 11
Name Type Length Format Informat Label
------ ---- ----- --------- -------- -------------
Policy Num 8 Policy Number
Total Num 8 DOLLAR8.2 COMMA10. Total Balance
Name Char 20 Patient Name

Variable names must ----
•be 1 to 32 characters in length
•begin with a letter (A-Z, including mixed case characters) or
an underscore (_)
•continue with any combination of numbers, letters, or
underscores.

A variable's type is either character or numeric.

SAS Techies 2009 11/13/09 12
Description Default Length Max Length

Variable Name <32 32 characters

Value
CHAR 8 bytes 32767 (32Kb)
NUM 8 bytes any bytes

SAS Techies 2009 11/13/09 13
Variable Type and Missing Values

A variable's type determines how SAS software displays missing values for a
variable.
 For character variables such as Name (shown below), a blank represents a missing
value.

 For numeric variables such as Age (shown below), a period represents a missing value.

Missing  Name  Sex   Age   Weight 
values
    M   48   128.6
 Laverne    M   58   158.3

 Jaffe   F  .   115.5
 Wilson   M   28   170.1

SAS Techies 2009 11/13/09 14
 Informats Informats determine how data values are
read into a SAS data set. You must use informats to
read numeric values that contain letters or other special
characters.

$ASCIIw. DATEw. NENGOw.
$BINARYw. DATETIMEw. PDw.d
$VARYINGw. HEXw. PERCENTw.
$w. JULIANw. TIMEw.
COMMAw.d MMDDYYw. w.d

SAS Techies 2009 11/13/09 15
 Formats write values out using some particular form.

 User defined formats
proc format lib=library;
value JobFmt * if format is char then $Jobfmt ;
103='manager'
105='text processor‘;
run;
 Applied like -- format var Jobfmt. Var2 dollar11.2;
 These are utilized to look up as if it were a table.

SAS Techies 2009 11/13/09 16
 Contents Procedure
PROC CONTENTS DATA=libref._ALL_
NODETAILS;
RUN;

SAS Techies 2009 11/13/09 17
To modify system PROC OPTIONS <option(s)>;
options, you submit RUN;
an OPTIONS Proc options option=firstobs value; run;
statement.
Number|NoNumber BYLINE|NOBYLINE
OPTIONS statement Date|nodate DETAILS|NODETAILS
is global, the Pageno FIRSTOBS=
FORMCHAR=
settings remain in Pagesize FORMDLIM=
effect until you Linesize LABEL|NOLABEL
modify them or end Mprint OBS=
your SAS session. Mlogic REPLACE|NOREPLACE
SOURCE|NOSOURCE
Symbolgen
Compress=yes|no

SAS Techies 2009 11/13/09 18
Default Yearcutoff=1920

Date Expression Interpreted As

12/07/41 12/07/1941

18Dec15 18Dec2015

04/15/30 04/15/1930

15Apr95 15Apr1995

Date Expression SAS Date Informat Interpreted As
06Oct59 date7. 06Oct1959
17Mar1783 date9. 17Mar1783

SAS Techies 2009 11/13/09 19
Assignment statements
X1=1; X2=2; X3=X2-X1;
Note: In the second case if either X2 or X1 is
missing then the value of X3 is missing.

 You can create a variable (not macro
variables) in a Datastep only.
Ex: data new; x=‘abc’; run;

SAS Techies 2009 11/13/09 20
 To create a variable that accumulates values
down observations, a sum statement in a
DATA step is used.
 Note -- missing values are ignored.
 Equivalent to function Sum(x1,x2,….)

Ex: If dsn some has y values
Data new; Y - 10,20,30 then
set some;
X+y; X - 10,30,60
run;

SAS Techies 2009 11/13/09 21
 To assign a length to a variable
Ex: Length var1 $ 10 var2 10;

Where used:

data finance.newloan;
set finance.records(drop=amount rate);
TotalLoan+payment;
if code='1' then Type='Fixed';
else Type='Variable'; run;

Output will have Type=‘Varia’

SAS Techies 2009 11/13/09 22
 Error Types

◦ Syntax Errors - occur when program statements do not
conform to the rules of the SAS language
◦ Data Errors - occur when some data values are not appropriate for the SAS
statements that are specified in a program

SAS Techies 2009 11/13/09 23
SAS Techies 2009 11/13/09 24
NOTE: Invalid data for RecHR in line 14 35-37.
RULE: ----+----1----+----2----+----3----+----4----+----5---
14 2575 Quigley, M 74 152 Q13 11 26 I

ID=2575 Name=Quigley, M RestHR=74 MaxHR=152 RecHR=. TimeMin=11
TimeSec=26 Tolerance=I _ERROR_=1 _N_=14

NOTE: 21 records were read from the infile TESTS.
The minimum record length was 45.
The maximum record length was 45.
NOTE: The data set CLINIC.STRESS has 21 observations and 8 variables.
NOTE: DATA statement used: real time 2.04 seconds cpu time 0.06
seconds

SAS Techies 2009 11/13/09 25