Top 10 - Best SAS Tutorial Documents - Examples and Tips - A Statistician's List

Daily sas code snippets are posted in the site:  http://sascodes.blogspot.com 

Keywords: SAS macros, SAS SQL, SAS Table, SAS Data Step, ODS, Data Mining Automation, SAS Tips, SAS Examples, SAS Reference for PROC Statements, Analytics Automation

Section: SAS SQL:

SAS SQL has some special advantages; before you know that let us understand how to do the same thing in standard SAS codes and SAS SQL codes

A nice SAS SQL basics notes with examples

Top 10 SAS SQL examples:

http://www2.sas.com/proceedings/sugi29/042-29.pdf

A great simple SAS SQL teaching document

http://www.pauldickman.com/teaching/sas/proc_sql_code_20041026.pdf

A nice article about INTO Clause

http://www.ats.ucla.edu/stat/sas/library/nesug98/p193.pdf

Undocumented and Hard to find SQL Features

http://www2.sas.com/proceedings/sugi28/019-28.pdf

Part of this new book - Proc SQL: Beyond the Basics Using SAS - By Kirk Paul Lafler where a great collection of codes (To make sense you may benefit well buying the book - look at SAS site for the book)

http://www.sas.com/samples/A58316

PROC SQL - Minimal Example Codes  - /*A good collection of PROC SQL Examples from the above references*/

Section: SAS MACROS:

A great simple start to macro writing

Sugi 28:  Nine steps to Start Writing Macros

A place of general collection of SAS starting points, SAS data sets, Teaching kits with examples from different subjects is:

http://www.ats.ucla.edu/stat/sas/

A classic macro example from "Nine Steps..." from above:

%macro vacation(dsn=expenses,varlist=_all_); 

 

proc sql noprint;

Select        mean(RoomRate),

put(today(),mmddyy10.),

month(today())

into :average,:date,:mon

from &dsn;

 

%if &mon=6 or &mon =7 or &mon =8

   %then %do;

proc print data=&dsn;

title "Lowest Priced Hotels in the

%upcase(&dsn) Data Set";

footnote "On &date";

var &varlist;

where RoomRate<=&average;

run;

   %end;

  

   %else %do;

proc print data=&dsn;

title "All Room Information in the

%upcase(&dsn) Data Set";

footnote "On &date";

var &varlist;

run;

   %end;

 

%mend;

 

options symbolgen mprint mlogic;

 

%vacation( )

 

========================================

Managing storage and recall of macros

========================================

 

Some not so commonly known sas codes

  • date conversion (from character yymmdd to sas date example

       ch_auto_open_date_1_f=input(ch_auto_open_date_1,yymmn6.); /* note the n in the informat */

     

  • date conversion (from character yyyy-mm-dd to sas date

            ch_auto_open_date_2_f=input(ch_auto_open_date_1,yymmn10.);

  • using do loop in a macro to read text based file names and its contents as data:

 

STORAGE TECHNIQUES (SUGI Notes)

There are three ways to store macro programs for future use: 

1) Store the source code in an external file and use this statement to pull it into a SAS program:

%include(file-pathname);

2) Use the Autocall Facility to search predefined source libraries for macro definitions. These libraries can consist of external files or SAS catalogs.

 3) Store the compiled macros. This does NOT save the SOURCE code! Always maintain the source code separately. To store the compiled macro :

 libname dlib ‘library-path’;

options mstored sasmstore=dlib;

%macro mname(parameters) / store

des=’description’;

%mend;

 

To access this stored macro :

libname dlib ‘library-path’;

options mstored sasmstore=dlib;

%mname(parameters)

========================================

Exporting and Importing Data

========================================

 

 

Importing data from Excel:   What if the data is access?

 

PROC IMPORT OUT= WORK.Howell

            DATAFILE= "E:\SPSS\Howell.xls"

            DBMS=EXCEL2000 REPLACE;

     GETNAMES=YES;

RUN;

 

PROC EXPORT DATA=SASUSER.CUST

     OUTTABLE="CUSTOMERS"

     DBMS=ACCESS

     REPLACE;

     DATABASE="C:\MYFILES\MYDATABASE.MDB";

RUN;

 

EXPORTING TO AN ASCII (DELIMITED) FILE:

 

PROC EXPORT DATA=MYFILES.CLASS

     OUTFILE="/MYFILES/CLASS"

     DBMS=DLM;

     DELIMITER=',';

RUN;

 

=====================================

 

Section: Automating SAS outputs for summary measures in Data Mining:

 

Knowing output dataset names in various PROCS in SAS STAT:

 

1.     Use the command outside of proc statements; 

 

(before the specific proc statement) ODS TRACE ON;

(after that proc statement              ) ODS TRACE OFF:

 

2.     Run the program and look at the log and find dataset name of output files from any Procs; Check the sas output datasets to clearly understand name of the file and the contents;

 

3.     Now take out those ODS Trace statments; introduce the following before the PROC statment:

 

4.     ODS listing Name (file name from ODS trace)=New name (it could have a specific path); /* storing it in a particular path and will not be lost after the SAS run)

 

5.     ODS listing close;

 

6.     Now do the proc contents to know the column names and attributes.

 

7.     In the next run use the sas dataset name as a dataset to access, to pull out your elements selectively, and to format the outputs to your needs;

 

This is extremely useful for automation and for large scale data mining problems.

 

For some more details look into

http://jeff-lab.queensu.ca/stat/sas/sasman/sashtml/ods/z0384852.htm

 

=====================================

 

Section: The SAS reference:

 

The general latest SAS PROC document for reference

 

http://bama.ua.edu/sasv8/stat/index.htm

 

This document also gives ODS dataset names for every Proc STAT step; If you use this you do not need to use the method given in the above section.

======================================

 

Finally my own sweet little codes library: I will be posting all the niceties learned in the last 15 years of experience (obviously large application specific codes are not posted here, but quick sample codes only, but enough number for novices to use and regular users like me to recall - );

 

Also, to bring together all my and my colleagues experience in using SAS and Statistical Methods, you may visit my Blog: Statistical Methods and Applications; your comments are most welcome, and your contributions are most, most welcome.

 

======================================

Top 10 questions a statistician should have answers at the fingers tip.

 

1. Application of set theory

2. Principles of combination and permutation

3. Application of basic probability problems

4. Application of Bayesian Theorem

5. Application of rate of growths and decay problems

6. Application of three different types of averages, dispersion measures

7. Application of top 5 probability distributions

8. Application of linear model principles and top 10 formulae for various principles in linear models

9. Challenges and alternative methods for OLS

10. Sampling problems and design principles

.