Skip to content

Part II Re: [R] read.ssd {foreign} (Reading a permanent SAS d ataset into an R data frame)

3 messages · Saikat DebRoy, Thomas Lumley, Stephen Arthur

#
Stephen> The SAS data set I PROC CPORTed is [9] the result is [10].
  Stephen> I PROC CIMPORTed [10] back to its orginal state [9], and it
  Stephen> worked.

  Stephen> So the SAS people think that the error is not with the SAS
  Stephen> XPORT file, but with R trying to load a text SAS XPORT
  Stephen> file, when it should be loading the SAS XPORT file in
  Stephen> binary format?  Is this a problem?

I have no idea what you mean by binary/text SAS XPORT formats. R
implements the XPORT format as described in
    http://ftp.sas.com/techsup/download/technote/ts140.html
and that definitely is not a text format.
#
On Fri, 20 Dec 2002, Saikat Debroy wrote:

            
Quoth http://www.nber.org/data/sasport.html :
---------------
There are two main kinds of SAS portable format datasets. These are CPORT
and XPORT. Both are popularly referred to as Transport datasets, but they
are quite different, and completely incompatible.

The CPORT datasets have the advantage that they can contain a wide variety
of SAS objects, not just datasets. However, they have no backwards
portability at all. Indeed, I am informed by SAS tech support that even
lateral portability is not to be taken for granted. The earliest version
of SAS for Unix to be able to read CPORT files generated under MVS 6.07 is
6.07.3 - not the more widespread release 6.07.2.

The true portable format is the XPORT format. Supposedly this has full
forwards and backwards compatibility (but see below). Only datasets can be
transferred with XPORT, not catalogs, formats, etc. This is the format you
would use to send data to another site.
----------------------


So CPORT is different, we don't know what the format is, and it may not be
documented anywhere.

	-thomas
2 days later
#
I'd like to thank the R Core Team for making the
parameters clearer for me on how to solve this
problem.

I think for now I will try to do most data management
tasks in SAS (from Oracle) and then use PROC EXPORT in
SAS to create a csv file that R can read and then I
can do my graphics, for publications and presentations
in R, because I frequently have variable names that
are greater than length 8.

I think this is the best solution for me given my
skills and the level of support I could expect to
receive for problems that are probably not high
priority.  I have written R functions in the past.  I
will have to re-learn how to do that.  This will all
take time.

Using Partha's solution:

* 1) Partha's code in SAS for using PROC EXPORT is:
LIBNAME libref 'C:\Windows\Path';
* 'yourfile' could be permanent or temporary SAS data;
PROC EXPORT DATA=libref.yourfile
 OUTFILE="C:\Windows\Path\yourfile.csv" REPLACE; 
RUN;

* 2) Partha's code in R for importing a csv file is;
yourfile <-
read.csv("C:\\Windows\\Path\\yourfile.csv")
names(yourfile)
yourfile

I thought the task of reading SAS data into R and
separately reading Oracle data into R was going to be
much easier than I now know it is.  I set up an Oracle
to SAS connection and an MS Access to SAS connection
on my system, just reading through notes on the web.

But because I realize R is much more a product of UNIX
than windows regarding database connectivity, I will
have to re-think my strategy.

Stephen