From An Introduction to SAS University Edition.
Full book available for purchase here.
Contents
List of Programs ........................................................................................ xi
About This Book ...................................................................................... xvii
About the Author ...................................................................................... xxi
Acknowledgments .................................................................................. xxiii
Part 1: Getting Acquainted with the SAS Studio
Environment ...................................................................... 1
Chapter 1: Introduction to the SAS University Edition ................................ 3
Introduction: An Overview of SAS and the SAS University Edition........................................... 3
Obtaining Your Free Copy of SAS ................................................................................................ 4
Installing the SAS University Edition ............................................................................................ 6
Conclusion .................................................................................................................................... 10
Chapter 2: The SAS Studio Interface ........................................................ 11
Introduction .................................................................................................................................. 11
Exploring the Built-In Data Sets ................................................................................................. 13
Sorting Your Data......................................................................................................................... 17
Switching Between Column Names and Column Labels ........................................................ 19
Resizing Tables ............................................................................................................................ 20
Creating Filters ............................................................................................................................. 20
Conclusion .................................................................................................................................... 23
Chapter 3: Importing Your Own Data ........................................................ 25
Introduction .................................................................................................................................. 25
Exploring the Utilities Tab ........................................................................................................... 25
Importing Data from an Excel Workbook .................................................................................. 27
Listing the SAS Data Set ............................................................................................................. 32
Importing an Excel Workbook with Invalid SAS Variable Names ........................................... 33
Importing an Excel Workbook That Does Not Have Variable Names .................................... 34
iv
Importing Data from a CSV File .................................................................................................. 35
Conclusion .................................................................................................................................... 36
Chapter 4: Creating Reports ..................................................................... 37
Introduction .................................................................................................................................. 37
Using the List Data Task to Create a Simple Listing ................................................................ 38
Filtering Data ................................................................................................................................ 44
Sorting Data .................................................................................................................................. 46
Outputting PDF and RTF Files .................................................................................................... 52
Joining Tables (Using the Query Window)................................................................................. 53
Conclusion .................................................................................................................................... 63
Chapter 5: Summarizing Data Using SAS Studio ....................................... 65
Introduction .................................................................................................................................. 65
Summarizing Numeric Variables ................................................................................................ 65
Adding a Classification Variable ................................................................................................. 70
Summarizing Character Variables.............................................................................................. 72
Conclusion .................................................................................................................................... 75
Chapter 6: Graphing Data ......................................................................... 77
Introduction .................................................................................................................................. 77
Creating a Frequency Bar Chart ................................................................................................. 77
Creating a Bar Chart with a Response Variable ....................................................................... 81
Adding a Group Variable ............................................................................................................. 83
Creating a Pie Chart .................................................................................................................... 84
Creating a Scatter Plot ................................................................................................................ 86
Conclusion .................................................................................................................................... 88
Part 2: Learning How to Write Your Own SAS Programs .. 89
Chapter 7: An Introduction to SAS Programming ...................................... 91
SAS as a Programming Language ............................................................................................. 91
The SAS Studio Programming Windows ................................................................................... 92
Your First SAS Program .............................................................................................................. 92
How the DATA Step Works ......................................................................................................... 97
How the INPUT Statement Works ............................................................................................ 102
Reading Delimited Data............................................................................................................. 102
How Procedures (PROCS) Work .............................................................................................. 104
How SAS Works: A Look Inside the Black Box ................................................................... 106
Conclusion .................................................................................................................................. 106
Chapter 8: Reading Data from External Files .......................................... 107
Introduction ................................................................................................................................ 107
Reading Data Values Separated by Delimiters ....................................................................... 107
Reading Comma-Separated Values Files ......................................................................... 110
Reading Data Separated by Other Delimiters .................................................................. 111
Reading Data in Fixed Columns ............................................................................................... 112
Column Input........................................................................................................................ 112
Formatted Input ................................................................................................................... 114
Reading Excel Files .................................................................................................................... 116
Reading from an Excel Workbook where Column Headings Are Invalid SAS Variable
Names ................................................................................................................................... 118
Conclusion .................................................................................................................................. 119
Problems ..................................................................................................................................... 120
Chapter 9: Reading and Writing SAS Data Sets ....................................... 123
What's a SAS Data Set? ............................................................................................................ 123
Temporary versus Permanent SAS Data Sets ........................................................................ 125
Shared Folders: Communicating between Your Virtual Computer and Your Real
Computer .................................................................................................................................... 126
Creating a Shared Folder and Reading Data from It .............................................................. 128
Creating a Permanent SAS Data Set........................................................................................ 133
Reading from a Permanent SAS Data Set ............................................................................... 134
Conclusion .................................................................................................................................. 135
Problems ..................................................................................................................................... 136
Chapter 10: Creating Formats and Labels .............................................. 137
What Is a SAS Format and Why Is It Useful? .......................................................................... 137
Using SAS Built-in Formats ...................................................................................................... 144
More Examples to Demonstrate How to Write Formats ........................................................ 145
Describing the Difference between a FORMAT Statement in a Procedure and a FORMAT
Statement in a DATA Step......................................................................................................... 146
Making Your Formats Permanent ............................................................................................ 147
Creating Variable Labels ........................................................................................................... 150
Conclusion .................................................................................................................................. 151
Problems ..................................................................................................................................... 151
vi
Chapter 11: Performing Conditional Processing ..................................... 153
Introduction ................................................................................................................................ 153
Grouping Age Using Conditional Processing ......................................................................... 153
Using Conditional Logic to Check for Data Errors ................................................................. 156
Describing the IN Operator ....................................................................................................... 157
Using Boolean Logic (AND, OR, and NOT Operators)............................................................ 158
A Special Caution When Using Multiple OR Operators ......................................................... 159
Conclusion .................................................................................................................................. 161
Problems ..................................................................................................................................... 162
Chapter 12: Performing Iterative Processing: Looping ........................... 165
Introduction ................................................................................................................................ 165
Demonstrating a DO Group ...................................................................................................... 166
Describing a DO Loop ............................................................................................................... 166
Using a DO Loop to Graph an Equation .................................................................................. 169
DO Loops with Character Values ............................................................................................. 170
Leaving a Loop Based on Conditions (DO WHILE and DO UNTIL Statements) .................. 172
DO WHILE ............................................................................................................................. 172
Combining an Iterative Loop with a WHILE Condition .................................................... 174
Do UNTIL .............................................................................................................................. 174
Demonstrating That a DO UNTIL Loop Executes at Least Once ................................... 175
Combining an Iterative Loop with an UNTIL Condition ................................................... 175
LEAVE and CONTINUE Statements ......................................................................................... 176
Conclusion .................................................................................................................................. 178
Problems ..................................................................................................................................... 178
Chapter 13: Working with SAS Dates ...................................................... 181
Introduction ................................................................................................................................ 181
Reading Dates from Text Data ................................................................................................. 181
Creating a SAS Date from Month, Day, and Year Values ...................................................... 184
Describing a Date Constant ...................................................................................................... 184
Extracting the Day of the Week, Day of the Month, and Year from a SAS Date ................. 186
Adding a Format to the Bar Chart ............................................................................................ 188
Computing Age from Date of Birth: The YRDIF Function ...................................................... 190
Conclusion .................................................................................................................................. 190
Problems ..................................................................................................................................... 191
vii
Chapter 14: Subsetting and Combining SAS Data Sets ........................... 193
Introduction ................................................................................................................................ 193
Subsetting (Filtering) Data in a SAS Data Set ......................................................................... 194
Describing a WHERE= Data Set Option................................................................................... 197
Describing a Subsetting IF Statement ..................................................................................... 198
A More Efficient Way to Subset Data When Reading Raw Data ........................................... 199
Creating Several Data Subsets in One DATA Step ................................................................. 199
Combining SAS Data Sets (Combining Rows) ........................................................................ 200
Adding a Few Observations to a Large Data Set (PROC APPEND) ...................................... 202
Interleaving Data Sets ............................................................................................................... 203
Merging Two Data Sets (Adding Columns) ............................................................................. 203
Controlling Which Observations Are Included in a Merge (IN= Data Set Option) ............... 205
Performing a One-to-Many or Many-to-One Merge .............................................................. 208
Merging Two Data Sets with Different BY Variable Names................................................... 210
Merging Two Data Sets with One Character and One Numeric BY Variable ...................... 211
Updating a Master File from a Transaction File (UPDATE Statement) ................................. 214
Conclusion .................................................................................................................................. 216
Problems ..................................................................................................................................... 217
Chapter 15: Describing SAS Functions ................................................... 219
Introduction ................................................................................................................................ 220
Describing Some Useful Numeric Functions .......................................................................... 220
Function Name: MISSING ................................................................................................... 221
Function Name: N ................................................................................................................ 221
Function Name: NMISS ....................................................................................................... 222
Function Name: SUM .......................................................................................................... 222
Function Name: MEAN ........................................................................................................ 223
Function Name: MIN............................................................................................................ 223
Function Name: MAX .......................................................................................................... 224
Function Name: SMALLEST ............................................................................................... 224
Function Name: LARGEST .................................................................................................. 225
Programming Example Using the N, NMISS, MAX, LARGEST, and MEAN Functions . 226
Function Name: INPUT........................................................................................................ 227
CALL Routine: CALL SORTN .............................................................................................. 227
Function Name: LAG ........................................................................................................... 229
Function Name: DIF ............................................................................................................. 231
viii
Describing Some Useful Character Functions........................................................................ 231
Function Names: LENGTHN and LENGTHC ..................................................................... 231
Function Names: TRIMN and STRIP .................................................................................. 233
Function Names: UPCASE, LOWCASE, and PROPCASE (Functions That Change
Case) ..................................................................................................................................... 234
Function Name: PUT ........................................................................................................... 235
Function Name: SUBSTRN (Newer Version of the SUBSTR Function) .......................... 236
Function Names: FIND and FINDC .................................................................................... 237
Function Names: CAT, CATS, and CATX .......................................................................... 238
Function Names: COUNT and COUNTC ........................................................................... 240
Function Name: COMPRESS .............................................................................................. 241
Function Name: SCAN ........................................................................................................ 244
CALL Routine: CALL MISSING ........................................................................................... 245
Function Names: NOTDIGIT, NOTALPHA, and NOTALNUM ........................................... 246
Function Names: ANYDIGIT, ANYALPHA, and ANYALNUM ........................................... 246
Function Name: TRANWRD ................................................................................................ 247
Conclusion .................................................................................................................................. 247
Problems ..................................................................................................................................... 248
Chapter 16: Working with Multiple Observations per Subject ................. 251
Introduction ................................................................................................................................ 251
Useful Tools for Working with Longitudinal Data ................................................................... 251
Describing First. and Last. Variables ....................................................................................... 252
Computing Visit-to-Visit Differences ....................................................................................... 253
Computing Differences Between the First and Last Visits .................................................... 255
Counting the Number of Visits for Each Patient ..................................................................... 256
Conclusion .................................................................................................................................. 258
Problems ..................................................................................................................................... 258
Chapter 17: Describing Arrays ............................................................... 261
Introduction ................................................................................................................................ 261
What Is an Array? ....................................................................................................................... 261
Describing a Character Array ................................................................................................... 264
Performing an Operation on Every Numeric Variable in a Data Set ..................................... 265
Performing an Operation on Every Character Variable in a Data Set .................................. 265
Converting a Data Set with One Observation per Subject into a Data Set with Multiple
Observations per Subject.......................................................................................................... 266
ix
Converting a Data Set with Multiple Observations per Subject into a Data Set with One
Observation per Subject............................................................................................................ 268
Conclusion .................................................................................................................................. 269
Problems ..................................................................................................................................... 270
Chapter 18: Displaying Your Data ........................................................... 273
Introduction ................................................................................................................................ 273
Producing a Simple Report Using PROC PRINT .................................................................... 273
Using Labels Instead of Variable Names as Column Headings ............................................ 277
Including a BY Variable in a Listing.......................................................................................... 279
Including the Number of Observations in a Listing ................................................................ 280
Conclusion .................................................................................................................................. 280
Problems ..................................................................................................................................... 281
Chapter 19: Summarizing Data with SAS Procedures ............................. 283
Introduction ................................................................................................................................ 283
Using PROC MEANS (with the Default Options) ..................................................................... 283
Using PROC MEANS Options to Customize the Summary Report ...................................... 286
Computing Statistics for Each Value of a BY Variable........................................................... 288
Using a CLASS Statement Instead of a BY Statement .......................................................... 289
Including Multiple CLASS Variables with PROC MEANS ....................................................... 290
Statistics Broken Down Every Way .......................................................................................... 291
Using PROC MEANS to Create a Summary Data Set ............................................................ 293
Letting PROC MEANS Name the Variables in the Output Data Set ...................................... 294
Creating a Summary Data Set with CLASS Variables ............................................................ 295
Using a Formatted CLASS Variable ......................................................................................... 297
Demonstrating PROC UNIVARIATE ......................................................................................... 298
Conclusion .................................................................................................................................. 302
Problems ..................................................................................................................................... 303
Chapter 20: Computing Frequencies ...................................................... 305
Introduction ................................................................................................................................ 305
Creating a Data Set to Demonstrate Features of PROC FREQ............................................. 305
Using PROC FREQ to Generate One-Way Frequency Tables ............................................... 307
Creating Two-Way Frequency Tables ...................................................................................... 309
Creating Three-Way Frequency Tables ................................................................................... 311
Using Formats to Create Groups for Numeric Variables ....................................................... 313
Conclusion .................................................................................................................................. 314
Problems ..................................................................................................................................... 314
Appendix: Solutions to the Odd-Numbered Problems ............................. 315
Index ...................................................................................................... 329
From An Introduction to SAS University Edition, by Ron Cody. Copyright  2015, SAS Institute Inc.,
Cary, North Carolina, USA. ALL RIGHTS RESERVED.