[R] How to read only ten rows from a SAS dataset (read.ssd)?

Phil Spector spector at stat.berkeley.edu
Tue Oct 19 19:48:54 CEST 2010


I've verified that David's solution will work, but
   a) since if is a reserved word, you must use the full name
      of the argument, namely ifs
   b) the argument passed through ifs= should be a full
      subsetting if statement.

So adding

      ifs='if _n_ <= 10'

to your sas.get call will return only the first 10 observations.

 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu


On Tue, 19 Oct 2010, David Winsemius wrote:

>
> On Oct 19, 2010, at 1:31 PM, johannes rara wrote:
>
>> Thanks David,
>> 
>> Yes, my code really works (using the foreign package), but when
>> handling a SAS file which contains > 500 000 rows and > 100 cols it is
>> not really fun anymore. My intention was do some preliminary research
>> from the data and the whole dataset was not needed.
>> 
>> After all, I could not find a possibility to get limited amount of
>> rows from a dataset when importing data to R.
>
> Which was why I suggested that you explore the possibilities offered by:
>
> -- Hmisc::sas.get with a suitable if= statement
>
> I seem to remember there is a SAS internal variable named something like _N_ 
> that is a "line number". Perhaps
>
> ... ,  if="_N_ <= 10",
>
> OR:
> -- using SAS to output a smaller file.
>
> OR:
>
> --- adding a SAS line to the output returned within the read.ssd function.
>
> -- 
> David.
>
>
>> -J
>> 
>> 2010/10/19 David Winsemius <dwinsemius at comcast.net>:
>>> 
>>> On Oct 19, 2010, at 6:47 AM, johannes rara wrote:
>>> 
>>>> I'm trying to read SAS datasets on Windows:
>>>> 
>>>> sashome <- "C:/Program Files/SAS/SAS 9.1"
>>>> fold <- "C:/temp"
>>>> g <- read.ssd(fold, "sasfile", sascmd = file.path(sashome, "sas.exe"))
>>> 
>>> And this was successful?
>>> 
>>>> 
>>>> How to get only e.g first ten rows into R?
>>> 
>>> Presumably you also entered require(foreign) if you had success. Looking 
>>> at
>>> the help page, we see no parameter that would effect such a result. So 
>>> just
>>> type:
>>> 
>>> read.ssd
>>> 
>>> You see that this function's code is available and if you know SAS, you
>>> should be able to insert the needed line that would limit the dataset 
>>> length
>>> to only ten lines. I'm not being coy. I would probably had further
>>> suggestions 20 years ago when I was using SAS.
>>> 
>>> There is a function sas.get in package Hmisc that offers more extensive
>>> control, but it is not clear to me on looking at the parameters whether 
>>> your
>>> particular request would be easily accommodated. The ifs= parameter would
>>> appear to be the most promising candidate to me. It appears that these 
>>> file
>>> formats are accepted:
>>> sasds.suffix <- c("sd2", "sd7", "ssd01", "ssd02", "ssd03",
>>>       "ssd04", "sas7bdat")
>>> 
>>> 
>>> Also, since the use of read.ssd implies that you have a working copy of 
>>> SAS,
>>> then another option is simply exporting a file in the format of your 
>>> choice?
>>> The SAS XPT format seems to be well handled by external programs.
>>> 
>>> 
>>> --
>>> David.
>>>> 
>>>> -J
>>>> 
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>> 
>>> David Winsemius, MD
>>> West Hartford, CT
>>> 
>>> 
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list