12 Ways to save SAS data

Using CARDS; File Save (with editor window active)
(this 'way' may be obvious, but works just fine when the datasets are small)

In the SAS Enhanced Editor window type data george; input id age score name $; cards; 101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane run; This will define the George dataset. Then click on File, Save or Save as &hellip;

Name the file what you like. It will be saved with the extension .SAS, which (though it's not named as .TXT or .ASC) is simply plain ASCII text and can also be treated as such. Take note of the Folder location where you place the file.

To get it back
Click on File->Open Program

Browse to the folder where you've saved the program. The browser window will only show you file that end with .SAS so if you've received a text file which has a differently named extension, you'll need to click on File type, Show All Files in the Open dialog window to see files not ending with .SAS.

''Note: often a file that is emailed to you as an attachment won't usually be saved to the same folder where you keep your SAS programs. Often an email client will download attachments to the desktop whereas it's probably best to keep your SAS work in a separate folder.''

Cut and Paste (ex. Fixed format data)
When in an editor (doesn't need to be SAS), highlight just the data

101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane

Click on Edit->Copy. Open up Notepad (from Start, All programs, Accessories, Notepad, if not elsewhere on your desktop). In Notepad choose Edit->Paste, then save the text file by clicking on File->Save. This will save the data as a plain (ASCII) text file. Note where (which folder) you have saved the data. Let's save this data with the name george.txt in the folder c:\Documents and Settings\Ralph\My Documents. You may also type the following data into a notepad window and save it as c:\Documents and Settings\Ralph\My Documents\fixed.txt

10119Harry 97 10220Sally 80 10325George 85 10418Mary  70 10530Jane  94

To Get Them Back (space-delimited or fixed-formatted text)
Run a variation of the following two SAS code examples.

data george; infile 'c:\Documents and Settings\Ralph\My Documents\george.txt'; input id age score name $; run;

data george2; input 1-3 id 4-5 age 6-12 name $ 13-14 score; cards; %include 'c:\Documents and Settings\Ralph\My Documents\fixed.txt'; run;

Links
See also - Various options associated with the new statements introduced: INFILE

%INCLUDE

LIBNAME
A library (which you can think of as a container for a collection of SAS datasets) is usefully named with a LIBNAME statement in SAS.

The example below first gives the name plato (not case sensitive) to a folder on the user's hard disk. It then saves a new (very simple) dataset in the folder (called mary) with the set of statements (between data and run) collectively called a 'data step'. The second data step also saves the dataset defined above called george in the 'plato' folder. Type and run/submit the following. libname plato 'C:\Documents and Settings\Ralph\My Documents\Data' ; data plato.mary ; input x; cards; 1 2 3 ; run; data plato.george ; set george; run;

In the Windows Explorer or by double clicking My Computer you'll see that the folder My Documents/Data contains two new files called mary.sas7bdat and george.sas7bdat. On Windows the file and folder names are not case sensitive. An example of the libname statement which could be run on Unix (my user account anyway) is

libname plato '/users/rhansen/data';

In SAS for Unix the key word LIBNAME and the SAS library name PLATO are not case sensitive, but everything typed within the quotation marks is (thus a folder/directory named '/data' is different from '/Data').

To get it (them) back
Point SAS to the folder where you expect to find a SAS dataset. Examples:

libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ;

or

libname russell '/users/rhansen/data';

We'd then be able to run

proc print data=socrates.mary; var x; run; data newgeorge; set socrates.george; newage=age+3; run</B>; proc</B> print</B> data=newgeorge; var id name age newage; run</B>; without any problems.

On Unix, if there were a very large dataset (perhaps related to Mary) in the directory /users/ralph/data called large.sas7bdat we could temporarily work with just part of it (the first 50 observations) by running:

libname russell '/users/rhansen/data' ; data</B> partmary ; set russell.large (obs=>50</B>); run</B>;

Explorer with one LIBNAME statement?, menu/New Library button, Library Icon
Using the SAS Explorer Let's name a library Mydata for now (library names are limited to 8 characters and shouldn't begin with a number). Type and submit

libname mydata 'C:\Documents and Settings\Ralph\My Documents\Data' ;

in the SAS Explorer window on the left, double click on the Libraries icon.



You should then see at least 5 Active Libraries (Gismaps, Mydata, Sashelp, Sasuser, and Work). Double click on the Mydata Icon to see what's already in the library. Sometimes the Explorer window isn't visible nor docked in it's usual location (if someone has closed it accidentally). When this has occurred, you can get the window back by clicking on View, and then Contents only (Note: **NOT Explorer!! **). In some rare instances you may also need to verify that in Tools, Options, Preferences, View (tab), that the Show, Docking View option is selected.

The Explorer works best as a tool to locate libraries and datasets that have already been defined, but it can also be used to create libraries. To create a New Library use the New Library icon on the toolbar.



In the New Library dialog window it will be required to provide a valid (short, 8 letter) SAS library name and to Browse to go to a valid hard disk location where you'd like to store datasets. Click OK when you have done so.

To save a a dataset in the newly created library we can either type and submit statements similar to what we did for Way #3 such as

data</B> mydata.george ; set george; run</B>;

or we can open a view of some existing data (using the Explorer) and save it from the File menu. This is illustrated now. Firstly, we'll find our way to some temporary data (assuming some exists in the WORK library). To move out of the Mydata library we click on the Up one level icon



which is visible when an Explorer window is active. Then, double-click on the Work library.

If WORK.George (a.k.a. George) has been created (as we did for Way #1) then it will appear in the explorer window as one of the Contents of 'Work'



Double-click on the George dataset icon. The VIEWTABLE window of Work. George will appear.

To save the George dataset permanently (while the Viewtable window is active) choose File->Save As and double-click on a library other than the scratch area Work library.



Hint: It's best to avoid the other default libaries as well (I.e. double-click on Mydata or a library you've defined)

Provide a meaningful Member name (which will be the name of your permanent dataset. We'll type George)

Click on the Save button (which should now be darkened/enabled instead of grayed out while the dialog has incomplete information)

The file created will have the name George.sas7bdat when it is viewed in Windows Explorer.

To get it back
Let's close SAS now to start with a clean session.

Create a new library any way you like (either by typing and submitting the libname statement as above) or by completing the New Library dialog (also described above)

Ex. Click on the icon on the toolbar)

It should now be a simple matter to use the Explorer window to look at the Libraries, the Mydata library (or whatever you've named 'C:\Documents and Settings\Ralph\My Documents\Data' for this session, and then to double click on Mydata.George to view it.

DATA ' '; direct access (including Unix ex.)
Direct access in a data step

Instead of making a temporary copy of a dataset when we define it, as in data</B> kramer; input letter $; cards; A B C ; run</B>;

We could instead save it directly to a permanent location by typing:

data</B> 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; input letter $; cards; A B C ; run</B>;

If we wanted a temporary as well as a permanent copy we could type: data</B> kramer; input letter $; cards; A B C ; run</B>; * writes a temporary copy first; data</B> 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; set kramer; <B>run</B>; * then a permanent copy is made;

To get it back
(notice,) we can use direct access on the set statement (reversing the read/write direction):

<B>data</B> kramer; set 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; <B>run</B>;

To create a permanent and temporary copy of a dataset we could alternatively have typed:

<B>data</B> 'C:\Documents and Settings\Ralph\My Documents\Data\kramer' kramer; input letter $; cards; A B C ; <B>run</B>;

which follows a typical syntax for creating two datasets from one, as in:

<B>data</B> k1 k2; set kramer; <B>run</B>;

Links:

 * SET
 * KEEP/DROP/RENAME

In Excel Save As .XLS
– Using Excel to save data, and then importing it

Problems can occur when more than one application is used to store and work with data, and Excel does not have formatting options (such as variable labels and formats) that will transfer to SAS, but SAS is well-integrated with Excel for simple data transfer.

In Excel, preparing your data. First, prepare and examine your data in Excel. The easiest way to structure your dataset (anticipating transfer to SAS for further analysis) is to use a single sheet that contains a rectangular data table. You may place long names (even column names that contain spaces) as column headers, or bypass Excel-given column names altogether, but it may be simplest to name the columns using short eight-letter names. Labels may be added later.

Secondly, if you anticipate keeping only part of your spreadsheet (i.e. if only part of it is actually a table of data) then you may want to use Range Names. For example, let's say we wanted to keep some classroom information as formatted Excel spreadsheet



We could define Range B4:E9 as the data we'd like to analyze &hellip; specifically naming the range 'data'. First select the range (which includes column header names in this instance). Then choose Insert, Name, Define&hellip; to open the Define Name window



To define a name for the B4:E9 range we type 'data' in the name field (replacing the word 'id') then click on OK. Alternatively, we could select/highlight the range, then click in the Name box (to the left of the = on the formula bar)



and replace the cell address B4 with the Range name 'data'.

Finally, (importantly!) Save and close the Excel spreadsheet! (If you encounter an '&hellip;IML &hellip; share' error in SAS while importing data, it is because you have left the Excel sheet open.

To get it back (/ to get the Excel data): In SAS, choose File, Import Data to start the Import Wizard



Click on Next with out changing the data source/import type. Click on Browse to locate where you have saved the Class2005.xls data file. Choose the file (the spreadsheet) and click Open. Click on OK. Choose data (instead of one of the sheets (Sheet1$, Sheet2$, or Sheet3$)) as the table you want to import. (Click the options button to &hellip;) Check that the Options are correctly set as you'd like.



Click on Next. Type in a valid dataset name (or member) as your SAS Destination.



Click on Finish. The PROC IMPORT statements (bundled in a .SAS program file) that might be created by the 'Next' step of the wizard is discussed in the next section/way.

You will know if the import was successful by examining the SAS Log file. There should be a note in the LOG file such as NOTE: WORK.CLASS was successfully created.

Further verification is easy to get by typing and submitting a program like: <B>proc</B> <B>contents</B> data=class; <B>run</B>;

<B>proc</B> <B>print</B> data=class (obs=<B>>10</B>); <B>run</B>;

Links: PROC IMPORT (and to example)

In Excel Save As CSV (move to Unix, SSH)
Saving, moving and reading CSV files To save a spreadsheet such as the Class2005 spreadsheet discussed in the Way #6 section we will first want to follow several of the preparations of the data as described in the previous section. Attention is neede re: the column headers and where the actual data resides on the sheet (in the workbook).

In addition (for CSV files) we may remove some of the sheet titles ('Class Information –2005') and padding rows and columns to simplify the import into SAS later on.

For example, let's first remove rows 1-3 and column A from above so that we have the following.

Next, choose File, Save as .., then select the File Type (.CSV) to save the data as a comma-separated value format. We should pay close attention to where this file is saved and be certain that the file ends with a .CSV extension. On some systems an H: drive link to the Bingsuns platform may be set up so that you can directly save the CSV file to a Unix platform.

Click on OK to Save only the active sheet since we can't save multiple sheets as a Comma Delimited file.

We'll also see



Click on Yes because we are not concerned about formatting (bold text, italics, alignment) We just want the data in separate columns.

Close the Excel program now. When asked if you'd like to save changes, you may choose 'Yes' or 'No' to continue inconsequentially. You must, however, close the Excel program before attempting to read the CSV file in SAS.

If we had saved the file in a folder called 'C:\Documents and Settings\Ralph\New Folder' we might now see the following when we examine the folder with Windows Explorer.



A CSV file is actually simple text. Most Windows systems will change the icon appearance of the file and use Excel to open it, but we can bypass this default and look at the text by Right-clicking the icon and choosing to open it with Notepad or WordPad.



To get it back(in SAS for Windows)
We can use the Import Wizard (Choose File, Import Data&hellip;and Comma Separated Values (*.csv) among the Standard data import types). In the next step you may also check that the Import Options are properly set to 'get the variable names from the first row' and to begin reading data values in the second row.



Instead of using the menu we could submit/run the following code <B>PROC</B> <B>IMPORT</B> OUT=WORK.CLASS DATAFILE=&quot;C:\Documents and Settings\Ralph\New Folder\class2005varsonly.csv&quot; DBMS=CSV REPLACE; GETNAMES=YES; DATAROW=<B>>2</B>; <B>RUN</B>;

To Move (Upload) the CSV File from Windows to Unix
You may need to use a File Transfer client such as WS_FTP or a secure/encrypted file transfer tool like &quot;SSH File Transfer&quot; (see SSH Documentation for details)

It's best to transfer the CSV document as Plain/ASCII text instead of Binary (o.w. ^M will appear in the Unix text file).

To get the data back (on Unix)
We'll use the following code: libname here &quot;.&quot;; <B>data</B>here.class2; infile &quot;class2005varsonly.csv&quot; dsd delimiter=&quot;,&quot; firstobs=<B>>2</B>; input id age score name $ ; <B>run</B>;

It may be necessary to experiment with some of the INFILE options (ex. TRUNCOVER, MISSOVER, DSD &hellip;) and with character string lengths and informats (on the INPUT statement ex. &quot;&hellip;name $20. ;&quot; or in a LENGTH statement) when you need to transfer long text variables or dates (see below).

Links
http://v9doc.sas.com IMPORT, CSV, INFILE, SSH, LENGTH, Informats

In SPSS Save as
Saving data in SPSS to be read by SAS

In SPSS, there are several pieces of information that we'd probably want to keep when we save the data (even if we plan to analyze it with SAS. Apart from variable names and the simple variable type information (i.e. Is the variable a Character or Numeric variable?) we'd also like to keep Variable Labels and Value Labels. Variable Labels are long names (text) for the shorter variable names which appear as the head of variable columns in the SPSS Data Editor. The longer text is what we'd like to appear on print outs of results. In the following example, &quot;Age group&quot; is the Variable label for the variable &quot;group&quot;.

The example illustrated here also includes Value labels. While the variable &quot;group&quot; is Numeric, it contains the values 1 and 2. A 1 indicates &quot;Young&quot; clients, and a 2 represents &quot;Old&quot; clients (relatively speaking). These are visable in the Data editor because the &quot;Value labels&quot; button is depressed.



In SPSS, to Save data in a format that is readable by SAS we choose File, Save as&hellip;, and click on the &quot;Save as type&quot; options to see the list of file types and data formats other than SPSS (.sav) formats available to us.



The options we are interested in are SAS v7 longextension SAS v7 for Unix SAS xpt file (see next way)

though a few others may be readable by SAS as well.

After selecting the SAS v7 longextension type we will see that the option of chosing

&quot;Save value labels into a .sas file&quot;

is also available to us.

Click on this so that a small .sas program is written which will associate the values 1 and 2 with their labels.

Now click on the Save button (unless you'd like to save only some of the variables using &quot;Variables&hellip;&quot; button).

The SPSS Output file message shows us

Data written to C:\Documents and Settings\...\Data\class2005a.sas7bdat. 5 variables and 5 cases written. Variable: id                Type: Number   Width:  11   Dec: 0 Variable: age               Type: Number   Width:  11   Dec: 0 Variable: score             Type: Number   Width:  11   Dec: 0 Variable: name              Type: String   Width:   6 Variable: group             Type: Number   Width:   8   Dec: 0

Value labels written to C:\Documents and Settings\Ralph\My Documents\Data\class

indicating that two files have been created in the C:\Documents and Settings\Ralph\My Documents\Data\ folder. The path name is too long for us to see the full name of the .sas file with labels, but we'll see that it is called &quot;class2005a.sas&quot;.

We can see the contents of this file, if we like, using any word processor or editor (or opening the file from the Windows Explorer.

libname library 'c:\documents and settings\ralph\my documents\data\' ; proc format library = library ; value group /* Age group */ 1 = 'Young' 2 = 'Old' ; proc datasets library = library ; modify class2005a; format group group.; quit;

To get it (our data) back
In SAS, as we did for Way #3, if we point SAS to the folder where we expect to find a SAS dataset (such as) libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ;

and then try to print the data proc print data=socrates.class2005a; run;

We'll see that our dataset depends upon having a definition for the &quot;group&quot; format.

ERROR: Format group not found or couldn't be loaded for variable group. NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used (Total process time): real time          0.68 seconds cpu time           0.00 seconds

We can also see this by running: proc contents data=socrates.class2005a; run; Which shows us                     The CONTENTS Procedure Data Set Name       SOCRATES.CLASS2005A                  Observations     5 Member Type         DATA                                 Variables        5

...(and other information)

File Name                  C:\Documents and Settings\Ralph\My Documents\Data\class2005a.sas7bdat Release Created            9.0000M0 Host Created               WIN Alphabetic List of Variables and Attributes #   Variable    Type    Len    Format     Label 2   age         Num       8 5   group       Num       8    group5. Age group 1   id          Num       8 4   name        Char      6 3   score       Num       8

Instead we should ensure that the group. format defined by adding an include statement, running the following instead. (group5. above indicates that the 'length' of the format is 5 characters. Defining group. is sufficient.)

libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ; %include 'C:\Documents and Settings\Ralph\My Documents\Data\class2005a.sas'; <B>proc</B> <B>print</B> data=socrates.class2005a; <B>run</B>; <B>proc</B> <B>contents</B> data=socrates.class2005a; <B>run</B>;

In SAS Save as XPT file
SAS Transport (.XPT) files Save a SAS xport file

If you plan to move datasets across different operating systems (though this method is unneccessary between Windows and Unix), or you're working with data from older versions of SAS you may want to save your datasets as Transport (XPORT) files. A tranport file can contain multiple datasets and other types of SAS files (CATALOGS, VIEWS, etc.). Traditionally the XPORT engine is used to create and retrieve Transport files. Using CPORT and CIMPORT procedures are a separate method of moving and translating files (see references).

Let's begin by being clear about where the datasets are originally stored (which folder) and what kinds of files are created. It will seem odd (at first, but it is technically correct) that a LIBNAME statement below is used both for naming a folder (where the datasets originate) AND to name a FILE (which looks like a single icon/document in Windows), but it contains several datasets to SAS (just as a folder might).

The following creates two small datasets in My Documents/Data folder.

libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ; <B>data</B> socrates.newman; input x @@ ; cards; 1 2 3 4 5 6 ; <B>run</B>; <B>data</B> socrates.george; input c $ @@ ; cards; A B C D E; <B>run</B>;

Then we define a destination for the two datasets (which are placed into a single transport file/document)

libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt'; <B>proc</B> <B>copy</B> in=socrates out=jerry memtype=data; <B>run</B>;



If we had want to save only the George dataset we would have added a select statement, as in libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt'; <B>proc</B> <B>copy</B> in=socrates out=jerry memtype=data; select george; <B>run</B>;

To get the data back we define the source of the data this time originating in the apartment.xpt file.

libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt';

Any name other than 'Jerry' could be used, and of course the location of the transport file can be changed (esp. if you decide to move the file to a new machine).

The library (JERRY) works like any other library (though you should save other datasets or objects from different SAS versions into it). We can print datasets or make temporary copies of the datasets in JERRY just as we've done earlier. For example:

<B>proc</B> <B>print</B> data=jerry.george; <B>run</B>; <B>data</B> tempnew; set jerry.newman; <B>run</B>; <B>proc</B> <B>print</B> data=tempnew; <B>run</B>;

XML
XML files read directly into SAS

<?xml version=&quot;1.0&quot; encoding=&quot;windows-1252&quot; ?> <CLIMATE> <HIGHTEMP> <PLACE> Libya </PLACE> <DATE> 1922-09-13 </DATE> <DEGREE-F> 136 </DEGREE-F> <DEGREE-C> 58 </DEGREE-C> </HIGHTEMP> <HIGHTEMP> <PLACE> NYState </PLACE> <DATE> 2005-06-13 </DATE> <DEGREE-F> 80 </DEGREE-F> <DEGREE-C> 25.8 </DEGREE-C> </HIGHTEMP> <LOWTEMP> <PLACE> Antarctica </PLACE> <DATE> 1983-07-21 </DATE> <DEGREE-F> -129 </DEGREE-F> </LOWTEMP> </CLIMATE>

To get it back libname test xml 'C:\Documents and Settings\Ralph\My Documents\Data\xml\temps.xml';

<B>proc</B> <B>datasets</B> library=test; <B>quit</B>; <B>proc</B> <B>print</B> data=test.hightemp; <B>run</B>; <B>proc</B> <B>print</B> data=test.lowtemp; <B>run</B>;

See generic XML template sent by Tom Links: http://support.sas.com/onlinedoc/913/getDoc/en/engxml.hlp/a002592973.htm

LIBNAME sasengine
Using the SAS LIBNAME engine options

Occasionally, in online repositories, or when you are receiving data from a source who is not using the latest version SAS on his/her machine, you may get a 'SAS dataset' that has been saved in a older format that cannot be read directly by a simple libname or filename statement (or by other methods mentioned above). Several of these older formats are still formats that SAS handles well (such as older versions of SAS and CSV (comma separated values)) when you tell SAS what type of file it is trying to read in a LIBNAME statement. This section will also describe how to read the newer SASECRSP-type datasets that is a specialized Stock/Financial Data base. All these types use the SAS Engine option on a LIBNAME statement.

The syntax for the LIBNAME statement is

LIBNAME libref 'SAS-data-library' <engine/host-options>;

This means that you can read a variety of different dataset types such as those mentioned by using statements like the following (using THOMAS as our libref name):

LIBNAME thomas SASECRSP 'C:\Documents and Settings\Ralph\My Documents\Data\LIB1';

which tells SAS that the folder pointed to as 'thomas' is a repository (library) for CRSP data, or

LIBNAME thomas CSV 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2';

prepares the LIB2 folder for CSV files, or

LIBNAME thomas V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB3';

means that the LIB3 folder will hold SAS version 8 (it may not be uncommon at this time to be required to work with files from version 7 (the V7 engine) or even version 6 file (V6).

Let's first save a sample dataset as a SAS Version 8 file using SAS.

*At first we'll make a temporary copy; <B>data</B> jerry; input id age score name $; cards; 101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane ; <B>run</B>;

When you declare that a certain folder (location) will be used to store permanent datasets using a particular SAS engine, then those datasets that you save in that folder using the associated LIBNAME (i.e. pairing the dataset name (a member) with the first part of it's permanent name, as in OLDFILES.JERRY) then the dataset is saved in the 'engine' format (in other words 'saved&hellip; using that engine'). So, if we'd like to save JERRY as a SAS Version 8 file we can submit the following:

* Then we'll save it permanently on our Windows machine. OLDFILES is how ; * we'll refer to the library. It's our libref like Thomas was above; libname OLDFILES V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2'; <B>data</B> OLDFILES.jerry; set jerry; <B>run</B>;

To get it back

libname OLDFILES V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2'; <B>data</B> jerry; set OLDFILES.jerry; <B>run</B>;

See also: Documentation Online More on SAS engines http://support.sas.com/onlinedoc/913/getDoc/en/lrcon.hlp/a001302065.htm

Main Index for SASECRSP Engine in SAS v9 http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_index.htm

SASECRSP in ETS User's Guide http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_sect9.htm

is particularly informative - The SASECRSP Interface Engine - The LIBNAME libref SASECRSP Statement

Other example programs using CRSP and documentation can be found at http://statmart.cc.binghamton.edu/BU_Documentation/CRSP2003/

DBF (to be written)
Using DBF files directly in SAS

To get it back
See also:

Online help to access DBF files in SAS

http://support.sas.com/onlinedoc/913/getDoc/en/acpcref.hlp/a000213690.htm

13 ?PROC DATASOURCE?, ?Stata, ?S-Plus (to be written)
PROC DATASOURCE? (for COMPUSTAT files), Stata?, S-Plus?

Further notes on CSV files (and tables published on the Internet).

Further notes on CRSP data (SASCRSPE engine).

Main Index for SASECRSP Engine in SAS v9 http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_index.htm

SASECRSP in ETS User's Guide http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_sect9.htm

is particularly informative - The SASECRSP Interface Engine - The LIBNAME libref SASECRSP Statement

Other example programs using CRSP and documentation can be found at http://statmart.cc.binghamton.edu/BU_Documentation/CRSP2003/

Notes on ICPSR (rectangular, hierarchical, flat data files).

Notes on multiline data?

Minitab/Mathematica to SAS

Working with Census data

Working with GIS (Spatial data)