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
spec...@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 <dwinsem...@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@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@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.
______________________________________________
R-help@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.