read.sas7bdat unable to read compressed file

r sas
user3641630 picture user3641630 · Jun 16, 2014 · Viewed 16.2k times · Source

I am trying to read a .sas7bdat file in R. When I use the command

library(sas7bdat)
read.sas7bdat("filename")

I get the following error:

Error in read.sas7bdat("county2.sas7bdat") : file contains compressed data

I do not have experience with SAS, so any help will be highly appreciated.

Thanks!

Answer

Joe picture Joe · Jun 16, 2014

According to the sas7bdat vignette [vignette('sas7bdat')], COMPRESS=BINARY (or COMPRESS=YES) is not currently supported as of 2013 (and this was the vignette active on 6/16/2014 when I wrote this). COMPRESS=CHAR is supported.

These are basically internal compression routines, intended to make filesizes smaller. They're not as good as gz or similar (not nearly as good), but they're supported by SAS transparently while writing SAS programs. Obviously they change the file format significantly, hence the lack of implementation yet.

If you have SAS, you need to write these to an uncompressed dataset.

options compress=no;
libname lib '//drive/path/to/files';
data lib.want;
set lib.have;
run;

That's the simplest way (of many), assuming you have a libname defined as lib as above and change have and want to names that are correct (have should be the filename without extension of the file, in most cases; want can be changed to anything logical with A-Z or underscore only, and 32 or fewer characters).

If you don't have SAS, you'll have to ask your data provided to make the data available uncompressed, or as a different format. If you're getting this from a PUDS somewhere on the web, you might post where you're getting it from and there might be a way to help you identify an uncompressed source.