Informats in SAS

SAS informats instruct SAS on how to read data from any input location (such as a file, an excel spreadsheet, a named pipe, or even another SAS variable, etc.) into a variable.

SAS has just two data types - character and numeric, and each informat is specific to storing the value into either a character or numeric variable. If the destination variable is a character, then the informat will begin with a $ symbol, anything else will be a numeric informat.

Informats are very important especially when we import data from other datasets. For example, most of the times while working on real time data, we extract data from various data sources (Oracle,Mysql,Teradata etc). Every time we import data we need to specify the informat statement so SAS can read the data properly.

Importing excel data into SAS

For example, say below is the sample data in an Excel ‘Test’,

Purchase_Date    Customer_Name    Price
05-05-2017    Adam    1075
06-05-2017    Noah    1093
07-05-2017    Peter    1072
08-05-2017    Louis    1101
09-05-2017    Zoe    1248
10-05-2017    Kevin    1045
11-05-2017    Messiah    1072
12-05-2017    John    1046
13-05-2017    Stephen    1043
14-05-2017    Solly    1113
15-05-2017    Jeevan    1137

You should use the below code to import this successfully,

Data Test;
Infile 'D:\Test.csv';
Delimiter=',' Missover DSD Getnames=Yes;
Informat Purchase_Date date9.;
Informat Price dollarx10.2;
Format Purchase_Date date9.;
Format Price dollarx10.2;
run;
Informat in the above code helps SAS to read the data from Excel.
Format in the above code helps to write the data properly into SAS Data set.

Importing character vs numeric

The example below uses the input statement to read a value from a source (in this case the string 123) into a both a character destination and a numeric destination.

data test;
   source = '123';
   numeric_destination = input(source, best.);
   character_destination = input(source, $3.);
run;