HRP 223 2008 HRP 223 2008 Topic 2

  • Slides: 41
Download presentation
HRP 223 - 2008 HRP 223 2008 Topic 2 – Using EG Copyright ©

HRP 223 - 2008 HRP 223 2008 Topic 2 – Using EG Copyright © 1999 -2008 Leland Stanford Junior University. All rights reserved. Warning: This presentation is protected by copyright law and international treaties. Unauthorized reproduction of this presentation, or any portion of it, may result in severe civil and criminal penalties and will be prosecuted to maximum extent possible under the law.

At this point you can: § Start up a project § Use SAS as

At this point you can: § Start up a project § Use SAS as a calculator § Set some configuration options HRP 223 2008 – Remember to work in WORK, rather than SASUSER § Create a library § Import a dataset – into work or your custom library § Subset a dataset – You can use data steps, write or point/click to SQL

Working on a Project § § § HRP 223 2008 Set up a library

Working on a Project § § § HRP 223 2008 Set up a library to hold your permanent data. Import data into that library. Look at what you’ve got. Check for bad data. Subset the data to keep the data you want. Make a report.

Make the Library § Tools menu > Assign Library… § Review the code (if

Make the Library § Tools menu > Assign Library… § Review the code (if you want) § Check the log HRP 223 2008

Write the Import Code HRP 223 2008 Where is the dataset node in the

Write the Import Code HRP 223 2008 Where is the dataset node in the flowchart? The log is good. It is a bug… they forgot to draw the dataset if you use proc import.

HRP 223 2008 § You really want to put the source file in the

HRP 223 2008 § You really want to put the source file in the library. – Tweak the code and link the import node to the library.

HRP 223 2008

HRP 223 2008

Files in a Library HRP 223 2008 § Once a file is in a

Files in a Library HRP 223 2008 § Once a file is in a library, you can access it just like any other file on your computer.

Structure HRP 223 2008 § If you have a dataset on the left margin

Structure HRP 223 2008 § If you have a dataset on the left margin of a process flow, you will have a problem in your future. – Put every dataset into a library. – If your datasets move across machines you just need to change the one library reference path. § Add a note (File > New > Note) with information on the origin of every data file and connect it. – Include the time, date, and source of the file (email titles help also).

Add a Variable HRP 223 2008 § To add a variable with EG: –

Add a Variable HRP 223 2008 § To add a variable with EG: – Select the dataset – Choose Filter and Query…. from the Data menu – Name the query and new dataset – Select the current variables (drag and drop to select data) – Click Computed Columns – Click New, then click Build Expression – Fill in the expression and click OK – Select the new variable and give it a good name – Select the new variable (drag and drop to select data)

HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008

Calculate Stuff HRP 223 2008 § Calculate the discounted price and then get some

Calculate Stuff HRP 223 2008 § Calculate the discounted price and then get some descriptive statistics on the new values. – Either reopen the previous filter and add in the formula there or just make a new data set by filtering the previously created data set.

HRP 223 2008 Click on the data set to analyze or choose it from

HRP 223 2008 Click on the data set to analyze or choose it from the list Proc Means Proc Univariate

Procs or Menu Items § Use the task list (right side of the screen),

Procs or Menu Items § Use the task list (right side of the screen), organized by task name, to look up the procedures that go with a menu item or if you are told to use a procedure, you can find the corresponding menu item like this. HRP 223 2008

HRP 223 2008

HRP 223 2008

HRP 223 2008 Not enough data for a useful histogram Be glad you did

HRP 223 2008 Not enough data for a useful histogram Be glad you did not need to memorize this stuff.

Looking at Categorical Data HRP 223 2008 § In this source file we have

Looking at Categorical Data HRP 223 2008 § In this source file we have a categorical “tour” variable. What are the its values? § Use the Describe > One-Way Frequencies menu option to see the categories. Drag Tour from the left pane and drop it into the Analysis variables group.

Proc Freak HRP 223 2008 § The procedure that does frequency counts is proc

Proc Freak HRP 223 2008 § The procedure that does frequency counts is proc freq (pronounced freak). It is very important to learn because it does the core categorical analysis for basic epidemiological studies. The EG code is: § This could be simplified PROC FREQ DATA=day 2. source; TABLES Tour; RUN;

The Levels HRP 223 2008 § You have already seen how to subset a

The Levels HRP 223 2008 § You have already seen how to subset a dataset using the GUI and SQL. § What if you want to subset into 3 different data sets? You could do a lot of pointing and clicking or write a little program.

Splitting in a Data Step HRP 223 2008 § All data steps begin with

Splitting in a Data Step HRP 223 2008 § All data steps begin with the data statement. § Most have a set statement saying where the data is coming from and they should end with a run statement. * A list of what data sets to make; data fj 12 ps 27 sh 43; * based on what file? ; set day 2. source; * Check the value of tour and if TRUE output; if tour = "FJ 12" then output fj 12; if tour = "PS 27" then output ps 27; if tour = "SH 43" then output sh 43; return; * This line is optional; run;

What is a statement? HRP 223 2008 § A statement is a single instruction

What is a statement? HRP 223 2008 § A statement is a single instruction beginning with a keyword and ending in a semicolon. § You can use white space and new lines to make them easier to read. – Look back at the proc sql statements you have seen and notice where the semicolons are. • SQL statements are LONG.

How does a Data Step work? HRP 223 2008 § The data statement says

How does a Data Step work? HRP 223 2008 § The data statement says make this (or these) data set(s). – SAS then reads every line down to the run statement and gathers a list of all variables used. • This list is called the program data vector (PDV). – It then sets all the variables to missing. – It then does the instruction listed on each line of the data step program in the order that the lines are written.

How SAS Processes a Dataset § HRP 223 2008 When you create a SAS

How SAS Processes a Dataset § HRP 223 2008 When you create a SAS data set, SAS does the following things: 1. SAS reads every line down to the run statement and gathers a list of all variables used. – This list is called the program data vector (PDV). 2. It sets the values in the PDV to missing. 3. Then it does all the instructions you tell it to do, in the order you have written them. 4. Then it writes all the variables out to the new dataset. 5. It then repeats the process if there is more data.

How SAS Processes a Dataset(2) § In the example below, SAS will look in

How SAS Processes a Dataset(2) § In the example below, SAS will look in the existing dataset HRP 223 2008 called Teletubbies and it will find two variables, teletubby and thing. Then it will find the variable called kid. § Then it will do the instructions in order. data Teletubbies 2; *name of a new data set; set Teletubbies; *load 1 observation of data; kid = "Andrew"; * fill in the blank; output; *write the variables to teletubbies 2; return; *return to the top of the step; run; *end of these instructions;

The Set Statement set Teletubbies; HRP 223 2008 § This line tells SAS to

The Set Statement set Teletubbies; HRP 223 2008 § This line tells SAS to load one row of data from the data set Teletubbies into the PDV. The first time this line is run, the first row of data is loaded into the PDV. § When there is no more data to load, the data step is done.

Variable Assignment HRP 223 2008 § In the example the word Andrew is assigned

Variable Assignment HRP 223 2008 § In the example the word Andrew is assigned to the variable kid. All variables are assigned from the right side into the variable named on the left. kid = "Andrew"; Assignment goes this way § If a variable appears on the left and right side of an equal sign, the original value on the right is changed and then written to the left. § a. Number = a. Number + 4; new value original value

How SAS Processes a Dataset(3) HRP 223 2008 § If you do not include

How SAS Processes a Dataset(3) HRP 223 2008 § If you do not include the output and return statements, SAS will do them automatically. So, the previous data step would typically be written like this. data Teletubbies 2; set Teletubbies; kid = "Andrew"; run;

Test Your Understanding(2) HRP 223 2008 data test 3 b; set source; if is.

Test Your Understanding(2) HRP 223 2008 data test 3 b; set source; if is. Male = 1 then output test 3 a; has. Cancer = 1; output test 3 b; run;

Adding Variables with Code HRP 223 2008 § Creating a new variable is simple.

Adding Variables with Code HRP 223 2008 § Creating a new variable is simple. All you need to do is give the bit of data a name and give it a value. The variable being assigned information is always on the left side of the equal sign. data day 2. paid; set day 2. source; didpay = ‘nope’; run; Actually it is too easy because it lets you miss bugs.

What is a bug anyway? HRP 223 2008 § When you write a program

What is a bug anyway? HRP 223 2008 § When you write a program and it doesn’t work the way that you intended, it is described as having a bug. § There are many types of bugs. Syntax and semantic errors are relatively easy to find and fix. When these errors happen, SAS can not figure out what you want done. Conceptual errors happen when SAS understands the words you give it but it does not do what you intended. These can be very, very hard to find and fix. § Spotting syntax bugs is easy. You just need to look in the SAS log.

What is a bug anyway? (2) HRP 223 2008 § You will look in

What is a bug anyway? (2) HRP 223 2008 § You will look in the log window to find out if SAS found any syntax errors. * oops forgot the "then";

Uninitialized Bug HRP 223 2008 § If you are trying to assign a string

Uninitialized Bug HRP 223 2008 § If you are trying to assign a string of letters to a character variable but you forget to quote the string, SAS thinks it is a variable but that variable never gets a value. data day 2. paid; set day 2. source; didpay = nope; run;

Uninitialized Bug (2) HRP 223 2008 § If empty variables (usually with easy typos

Uninitialized Bug (2) HRP 223 2008 § If empty variables (usually with easy typos or spelling mistakes) show up in your datasets, you probably made this mistake.

Parts of a SAS Dataset HRP 223 2008 § You have seen how to

Parts of a SAS Dataset HRP 223 2008 § You have seen how to browse a SAS dataset like a spreadsheet. There are two parts of a dataset which you do not see when you browse the data. – There is a section that acts like a dictionary which has a description of the data set, including among other things, the types of variables (character or numeric) and when the data set was created. – There is sometimes a section that has “index” information. You can create an index to help speed up processing of huge files.

Seeing the Details with EG HRP 223 2008

Seeing the Details with EG HRP 223 2008

By Position HRP 223 2008 § Knowing the variables’ order can help you do

By Position HRP 223 2008 § Knowing the variables’ order can help you do complex things.

If want to code… HRP 223 2008 § You can see the dictionary of

If want to code… HRP 223 2008 § You can see the dictionary of attributes by typing a proc contents step in a code window: proc contents data=teletubbies; run; § To get the variables in their stored order, use: proc contents data=teletubbies position; run;

Running it All HRP 223 2008 § If you return to this project later

Running it All HRP 223 2008 § If you return to this project later and you want to rerun the code, keep in mind you can right click on the left-most node and do Run Branch.