sasI SAS Publishing he ittle sas Book r r R D T Lora D. Delwiche and Susan. Slaughter The power to know
a primer THIRD EDITION The Little SAS® Book Lora D. Delwiche and Susan J. Slaughter
The correct bibliographic citation for this manual is as follows: Delwiche, Lora D. and Slaughter, Susan J, 2003. The Little SAS Book: A Primer, Third Edition. Cary, NC: SAS Institute Inc The Little SAS Book: A Primer. Third Edition Copyright 2003, SAS Institute Inc, Cary, NC, USA ISBN1-59047-333-7 All rights reserved. Produced in the United States of America. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying or otherwise, without the prior written permission of the publisher, SAS Institute Inc. U.S. Government Restricted Rights Notice: Use, duplication, or disclosure of this software and related documentation by the U.S. government is subject to the agreement with SAs Institute and the restrictions set forth in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987) SAS Institute Inc, SAS Campus Drive, Cary, North Carolina 27513 st printing, November 2003 SAS Publishing provides a complete selection of books and electronic products to help customers use SAs software to its fullest potential. For more information about our e-books, e-learning products, CDs, and hard- copy books, visit the SAs Publishing Web site at support. sas. com/pubs or call 1-800-727-3228 SAS and all other SAs Institute Inc product or service names are registered trademarks or trademarks of SAs nstitute Inc in the USA and other countries. indicates USA registration. Other brand and product names are trademarks of their respective companie
The correct bibliographic citation for this manual is as follows: Delwiche, Lora D. and Slaughter, Susan J., 2003. The Little SAS Book: A Primer, Third Edition. Cary, NC: SAS Institute Inc. The Little SAS Book: A Primer, Third Edition Copyright © 2003, SAS Institute Inc., Cary, NC, USA ISBN 1-59047-333-7 All rights reserved. Produced in the United States of America. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the prior written permission of the publisher, SAS Institute Inc. U.S. Government Restricted Rights Notice: Use, duplication, or disclosure of this software and related documentation by the U.S. government is subject to the Agreement with SAS Institute and the restrictions set forth in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987). SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513. 1st printing, November 2003 SAS Publishing provides a complete selection of books and electronic products to help customers use SAS software to its fullest potential. For more information about our e-books, e-learning products, CDs, and hardcopy books, visit the SAS Publishing Web site at support.sas.com/pubs or call 1-800-727-3228. SAS® and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. Other brand and product names are trademarks of their respective companies
CONTENTS Acknowledgments Introducing SAS Software x About this book xi Whats New xiv Chapter 1 Getting Started Using SAS Software 1.1 The SAS Language 2 1.2 SAS Data Sets 4 1.3 The Two Parts of a SAS Program 6 1.4 The DATA Steps Built-in Loop 8 1.5 Choosing a Mode for Submitting SAS Programs 10 1.6 Windows and Commands in the SAS Windowing Environment 12 Submitting a Program in the SAs Windowing Environment 14 1.8 Reading the SAS Log 16 1.9 Viewing Your Results in the Output Window 18 1.10 Creating HTML Output 20 1.11 SAS Data Libraries 22 1.12 Viewing Data Sets with SAS Explorer 24 1.13 Using SAS System Options 26 Chapter 2 Getting Your Data into SAS 2.1 Methods for Getting Your Data into SAS 2.2 Entering Data with the Viewtable Window 2.3 Reading Files with the Import Wizard 34 4 Telling sas where to Find Your Raw Data 36 6 Reading Raw Data Arranged in Columns 40
CONTENTS Acknowledgments ix Introducing SAS Software x About This Book xi What’s New xiv Chapter 1 Getting Started Using SAS Software 1.1 The SAS Language 2 1.2 SAS Data Sets 4 1.3 The Two Parts of a SAS Program 6 1.4 The DATA Step’s Built-in Loop 8 1.5 Choosing a Mode for Submitting SAS Programs 10 1.6 Windows and Commands in the SAS Windowing Environment 12 1.7 Submitting a Program in the SAS Windowing Environment 14 1.8 Reading the SAS Log 16 1.9 Viewing Your Results in the Output Window 18 1.10 Creating HTML Output 20 1.11 SAS Data Libraries 22 1.12 Viewing Data Sets with SAS Explorer 24 1.13 Using SAS System Options 26 Chapter 2 Getting Your Data into SAS 2.1 Methods for Getting Your Data into SAS 30 2.2 Entering Data with the Viewtable Window 32 2.3 Reading Files with the Import Wizard 34 2.4 Telling SAS Where to Find Your Raw Data 36 2.5 Reading Raw Data Separated by Spaces 38 2.6 Reading Raw Data Arranged in Columns 40
The Little sas book 2.7 Reading Raw Data Not in Standard Format 42 2. 8 Selected Informats 44 2.10 Reading Messy Raw Data 48 2.11 Reading Multiple Lines of Raw Data per Observation 50 2.12 Reading Multiple Observations per Line of Raw Data 52 2.13 Reading Part of a Raw Data File 54 14 Controlling Input with Options in the INFILE Statement 50 2.15 Reading Delimited Files with the DATA Step 58 2.16 Reading Delimited Files with the IMPORT Procedure 60 2.17 Reading PC Files with the IMPORT Procedure 62 2.18 Reading PC Files with DDE 64 2.19 Temporary versus Permanent SAS Data Sets 66 2.20 Using Permanent SAS Data Sets with LIBNAME Statements 68 2.21 Using Permanent SAS Data Sets by Direct Referencing 70 2.22 Listing the Contents of a SAS Data Set 72 Chapter 3 Working with Your Data 3.1 Creating and Redefining Variables 7( 3.2 Using SAs Functions 78 3.4 Using IF-THEN Statements 82 3.5 Grouping Observations with IF-THEN/ELSE Statements 84 3.6 Subsetting Your Data 86 3.7 Working with SAS Dates 88 3.8 Selected Date Informats, Functions, and Formats 90 3. 9 Using the RETAiN and Sum Statements 92 3.10 Simplifying Programs with Arrays 9 3.11 Using Shortcuts for Lists of Variable Names 96
iv The Little SAS Book 2.7 Reading Raw Data Not in Standard Format 42 2.8 Selected Informats 44 2.9 Mixing Input Styles 46 2.10 Reading Messy Raw Data 48 2.11 Reading Multiple Lines of Raw Data per Observation 50 2.12 Reading Multiple Observations per Line of Raw Data 52 2.13 Reading Part of a Raw Data File 54 2.14 Controlling Input with Options in the INFILE Statement 56 2.15 Reading Delimited Files with the DATA Step 58 2.16 Reading Delimited Files with the IMPORT Procedure 60 2.17 Reading PC Files with the IMPORT Procedure 62 2.18 Reading PC Files with DDE 64 2.19 Temporary versus Permanent SAS Data Sets 66 2.20 Using Permanent SAS Data Sets with LIBNAME Statements 68 2.21 Using Permanent SAS Data Sets by Direct Referencing 70 2.22 Listing the Contents of a SAS Data Set 72 Chapter 3 Working with Your Data 3.1 Creating and Redefining Variables 76 3.2 Using SAS Functions 78 3.3 Selected SAS Functions 80 3.4 Using IF-THEN Statements 82 3.5 Grouping Observations with IF-THEN/ELSE Statements 84 3.6 Subsetting Your Data 86 3.7 Working with SAS Dates 88 3.8 Selected Date Informats, Functions, and Formats 90 3.9 Using the RETAIN and Sum Statements 92 3.10 Simplifying Programs with Arrays 94 3.11 Using Shortcuts for Lists of Variable Names 96
Contents Chapter 4 Sorting, Printing, and Summarizing Your Data 4.1 Using SAS Procedures 100 4.2 Subsetting in Procedures with the WHERE Statement 102 4.3 Sorting Your Data with PROC SORT 104 4.4 Printing Your Data with PROC PRINT 106 4.5 Changing the Appearance of Printed Values with Formats 108 4.6 Selected Standard Formats 110 4.7 Creating Your Own Formats Using PROC FORMAT 112 4.8 Writing Simple Custom Reports 114 4.9 Summarizing Your Data Using PROC MEANS 116 4.10 Writing Summary Statistics to a SAS Data Set 118 4.11 Counting Your Data with PROC FREQ 120 4. 12 Producing Tabular Reports with PROC TABULATE 122 4.13 Adding Statistics to PROC TABULATE Output 124 4. 14 Enhancing the Appearance of PROC TABULATE Output 126 4. 15 Changing Headers in PROC TABULATE Output 128 4.16 Specifying Multiple Formats for Data Cells in PROC TABULATE Output 130 4.17 Producing Simple Output with PROC REPORT 132 4.18 Using DEFINE Statements in PROC REPORT 134 4.19 Creating Summary Reports with PROC REPORT 136 4.20 Adding Summary Breaks to PROC REPORT Output 138 4.21 Adding Statistics to PROC REPORT Output 140 Chapter 5 Enhancing Your Output with ODs 5.1 Concepts of the Output Delivery System 144 5.2 Tracing and Selecting Procedure Output 146 5.3 Creating SAS Data Sets from Procedure Output 148 5.4 Using ODS Statements to Create HTML Output 150 5 Using ODS Statements to Create RTF Output 152 5.6 Using ODS Statements to Create PRINTER Output 154 5.7 Customizing Titles and Footnotes 156 5.8 Customizing PROC PRINT Output with the STYLE= Option 15
Contents v Chapter 4 Sorting, Printing, and Summarizing Your Data 4.1 Using SAS Procedures 100 4.2 Subsetting in Procedures with the WHERE Statement 102 4.3 Sorting Your Data with PROC SORT 104 4.4 Printing Your Data with PROC PRINT 106 4.5 Changing the Appearance of Printed Values with Formats 108 4.6 Selected Standard Formats 110 4.7 Creating Your Own Formats Using PROC FORMAT 112 4.8 Writing Simple Custom Reports 114 4.9 Summarizing Your Data Using PROC MEANS 116 4.10 Writing Summary Statistics to a SAS Data Set 118 4.11 Counting Your Data with PROC FREQ 120 4.12 Producing Tabular Reports with PROC TABULATE 122 4.13 Adding Statistics to PROC TABULATE Output 124 4.14 Enhancing the Appearance of PROC TABULATE Output 126 4.15 Changing Headers in PROC TABULATE Output 128 4.16 Specifying Multiple Formats for Data Cells in PROC TABULATE Output 130 4.17 Producing Simple Output with PROC REPORT 132 4.18 Using DEFINE Statements in PROC REPORT 134 4.19 Creating Summary Reports with PROC REPORT 136 4.20 Adding Summary Breaks to PROC REPORT Output 138 4.21 Adding Statistics to PROC REPORT Output 140 Chapter 5 Enhancing Your Output with ODS 5.1 Concepts of the Output Delivery System 144 5.2 Tracing and Selecting Procedure Output 146 5.3 Creating SAS Data Sets from Procedure Output 148 5.4 Using ODS Statements to Create HTML Output 150 5.5 Using ODS Statements to Create RTF Output 152 5.6 Using ODS Statements to Create PRINTER Output 154 5.7 Customizing Titles and Footnotes 156 5.8 Customizing PROC PRINT Output with the STYLE= Option 158
The Little sas book 5.9 Customizing PROC REPORT Output with the STYLE= Option 160 5.10 Customizing PROC TABULATE Output with the STYLE= Option 162 5.11 Adding Traffic-Lighting to Your Output 164 Chapter 6 Modifying and Combining SAS Data Sets 6.1 Modifying a Data Set Using the SET Statement 170 6.2 Stacking Data Sets Using the SET Statement 172 3 Interleaving Data Sets Using the SET Statement 174 6.4 Combining Data Sets Using a One-to-One Match Merge 176 6.5 Combining Data Sets Using a One-to-Many Match Merge 178 6.6 Merging Summary Statistics with the Original Data 180 6.7 Combining a Grand Total with the Original Data 182 6.8 Updating a Master Data Set with Transactions 184 6.9 Using SAS Data Set Options 186 6.10 Tracking and Selecting Observations with the IN=Optic riting Multiple Data Sets Using the OUTPUT Statement 190 6.12 Making Several Observations from One Using the OUTPUT Statement 192 13 Changing Observations to Variables Using PROC TRANSPOSE 194 6.14 Using SAS Automatic Variables 196 Chapter 7 Writing Flexible Code with the SAS Macro Facility 7.1 Macro Concepts 200 7.2 Substituting Text with Macro Variables 202 7.3 Creating Modular Code with Macros 204 7.4 Adding Parameters to Macros 206 riting Macros with Conditional Logic 208 .6 Writing Data-Driven Programs with CALL SYMPUT 210 7.7 Debugging Macro Errors 212
vi The Little SAS Book 5.9 Customizing PROC REPORT Output with the STYLE= Option 160 5.10 Customizing PROC TABULATE Output with the STYLE= Option 162 5.11 Adding Traffic-Lighting to Your Output 164 5.12 Selected Style Attributes 166 Chapter 6 Modifying and Combining SAS Data Sets 6.1 Modifying a Data Set Using the SET Statement 170 6.2 Stacking Data Sets Using the SET Statement 172 6.3 Interleaving Data Sets Using the SET Statement 174 6.4 Combining Data Sets Using a One-to-One Match Merge 176 6.5 Combining Data Sets Using a One-to-Many Match Merge 178 6.6 Merging Summary Statistics with the Original Data 180 6.7 Combining a Grand Total with the Original Data 182 6.8 Updating a Master Data Set with Transactions 184 6.9 Using SAS Data Set Options 186 6.10 Tracking and Selecting Observations with the IN= Option 188 6.11 Writing Multiple Data Sets Using the OUTPUT Statement 190 6.12 Making Several Observations from One Using the OUTPUT Statement 192 6.13 Changing Observations to Variables Using PROC TRANSPOSE 194 6.14 Using SAS Automatic Variables 196 Chapter 7 Writing Flexible Code with the SAS Macro Facility 7.1 Macro Concepts 200 7.2 Substituting Text with Macro Variables 202 7.3 Creating Modular Code with Macros 204 7.4 Adding Parameters to Macros 206 7.5 Writing Macros with Conditional Logic 208 7.6 Writing Data-Driven Programs with CALL SYMPUT 210 7.7 Debugging Macro Errors 212
Chapter 8 Using Basic Statistical Procedures 8.1 Examining the Distribution of Data with PROC UNIVARIATE 216 8.2 Producing Statistics with PROC MEANS 218 8.3 Testing Categorical Data with PROC FREQ 8.4 Examining Correlations with PROC CORR 2 Ising PROC REG for Simple Regression Analysis 224 8.6 Reading the Output of PROC REG 226 8.7 Using PROC ANOVA for One-Way Analysis of Variance 228 g the Output of PROC ANOVA 23 8.9 Graphical Interfaces for Statistical Analysis 232 Chapter 9 Exporting Your Data 9.1 Methods for Exporting Your Data 236 9.2 Writing Files Using the Export Wizard 238 9.3 Writing Delimited Files with the eXPORT Procedure 240 9.4 Writing PC Files with the EXPORT Procedure 24 9.5 Writing Raw Data Files with the DATA Step 244 9.6 Writing Delimited and HTML Files using ODS 246 9.7 Sharing SAS Data Sets with Other Types of Computers 248 Chapter 10 Debugging Your SAs Programs 10.1 Writing SAS Programs That Work 252 10.2 Fixing Programs That Dont Work 254 10.3 Searching for the Missing Semicolon 256 10.4 Note: INPUT Statement Reached Past the End of the Line 258 10.6 Note: Invalid Data 262 10.7 Note: Missing Values Were Generated 264 10.8 Note: Numeric Values Have Been Converted to Character(or Vice Versa) 266 10.9 DATA Step Produces Wrong Results but No Error Message 268
Contents vii Chapter 8 Using Basic Statistical Procedures 8.1 Examining the Distribution of Data with PROC UNIVARIATE 216 8.2 Producing Statistics with PROC MEANS 218 8.3 Testing Categorical Data with PROC FREQ 220 8.4 Examining Correlations with PROC CORR 222 8.5 Using PROC REG for Simple Regression Analysis 224 8.6 Reading the Output of PROC REG 226 8.7 Using PROC ANOVA for One-Way Analysis of Variance 228 8.8 Reading the Output of PROC ANOVA 230 8.9 Graphical Interfaces for Statistical Analysis 232 Chapter 9 Exporting Your Data 9.1 Methods for Exporting Your Data 236 9.2 Writing Files Using the Export Wizard 238 9.3 Writing Delimited Files with the EXPORT Procedure 240 9.4 Writing PC Files with the EXPORT Procedure 242 9.5 Writing Raw Data Files with the DATA Step 244 9.6 Writing Delimited and HTML Files using ODS 246 9.7 Sharing SAS Data Sets with Other Types of Computers 248 Chapter 10 Debugging Your SAS Programs 10.1 Writing SAS Programs That Work 252 10.2 Fixing Programs That Don’t Work 254 10.3 Searching for the Missing Semicolon 256 10.4 Note: INPUT Statement Reached Past the End of the Line 258 10.5 Note: Lost Card 260 10.6 Note: Invalid Data 262 10.7 Note: Missing Values Were Generated 264 10.8 Note: Numeric Values Have Been Converted to Character (or Vice Versa) 266 10.9 DATA Step Produces Wrong Results but No Error Message 268
vili The Little sas book 10.10 The DATA Step Debugger 270 10.11 Error: Invalid Option, Error: The Option Is Not Recognize or Error: Statement Is Not valid 272 10.12 Note: Variable Is Uninitialized or Error: Variable not Found 274 10. 13 SAS Truncates a Character Variable 276 8 10.15 SAS Runs Out of Memory or Disk Space 280 perdices a Where to Go from Here 284 Getting Help from SAS Technical Support 286 C An Overview of sas Products 288 E Coming to SAS from a Programming Language 298 F oming to SAS from SQ Index 309
viii The Little SAS Book 10.10 The DATA Step Debugger 270 10.11 Error: Invalid Option, Error: The Option Is Not Recognized, or Error: Statement Is Not Valid 272 10.12 Note: Variable Is Uninitialized or Error: Variable Not Found 274 10.13 SAS Truncates a Character Variable 276 10.14 SAS Stops in the Middle of a Job 278 10.15 SAS Runs Out of Memory or Disk Space 280 Appendices A Where to Go from Here 284 B Getting Help from SAS Technical Support 286 C An Overview of SAS Products 288 D Coming to SAS from SPSS 291 E Coming to SAS from a Programming Language 298 F Coming to SAS from SQL 302 Index 309