Leif Kirschenbaum wrote:
> A few thoughts about R vs SAS:
> I started learning SAS 8 years ago at IBM, I believe it was version 6.10.
> I started with R 7 months ago.
>
> Learning curve:
> I think I can do everything in R after 7 months that I could do in SAS
> after about 4 years.
>
> Bugs:
> I suffered through several SAS version changes, 7.0, 7.1, 7.2, 8.0, 9.0 (I
> may have misquoted some version numbers). Every version change gave me
> headaches, as every version release (of an expensive commercially produced
> software set) had bugs which upset or crashed previously working code. I had
> code which ran fine under Windows 2000 and terribly under Windows XP. Most
> bugs I found were noted by SAS, but never fixed.
> With R I have encounted very few bugs, except for an occasional crash of R,
> which I usually ascribe to some bug in Windows XP.
>
> Help:
> SAS help was OK. As others have mentioned, there is too much. I even had
> the set of printed manuals on my desk (stretching 4 feet or so), which were
> quote impenetrable. I had almost no support from colleagues: even within IBM
> the number of advanced SAS users was small.
> With R this mailing list has been of great help: almost every issue I copy
> some program and save it as a "R hint xxxx" file.
> --> A REQUEST
> I would say that I would appreciate a few more program examples with the help
> pages for some functions. For instance, "?Control" tells me about "if(cond)
> cons.expr else alt.expr", however an example of
> if(i==1) { print("one")
> } else if(i==2) { print("two")
> } else if(i>2) { print("bigger than two") }
> at the end of that help section would have been very helpful for me a few
> months ago.
>
> Functions:
> Writing my own functions in SAS was by use of macros, and usually depended
> heavily on macro substitution. Learning SAS's macro language, especially
> macro substitution, was very difficult and it took me years to be able to
> write complicated functions. Quite different situation in R. Some functions I
> have written by dint of copying code from other people's packages, which has
> been very helpful.
> I wanted to generate arbitrary k-values (the k-multiplier of sigma for a
> given alpha, beta, and N to establish confidence limits around a mean for
> small populations). I had a table from a years old microfiche book giving
> values but wanted to generate my own. I had to find the correct integrals to
> approximate the k-values and then write two SAS macros which iterated to the
> desired level of tolerance to generate values. I would guess that there is
> either an R base function or a package which will do this for me (when I need
> to start generating AQL tables). Given the utility of these numbers, I was
> disappointed with SAS.
>
> Data manipulation:
> All SAS data is in 2-dimensional datasets, which was very frustrating after
> having used variables, arrays, and matrices in BASIC, APL, FORTRAN, C,
> Pascal, and LabVIEW. SAS allows you to access only 1 row of a dataset at a
> time which was terribly horribly incomprehensibly frustrating. There were so
> many many problems I had to solve where I had to work around this SAS
> paradigm.
> In R, I can access all the elements of a matrix/dataframe at once, and I
> can use >2 dimensional matrices. In fact, the limitations of SAS I had
> ingrained from 7.5 years has sometimes made me forget how I can do something
> so easily in R, like be able to know when a value in a column of a dataframe
> changes:
> DF$marker <- DF[1:(nrow(DF)-1),icol] != DF[2:nrow(DF),icol]
> This was hard to do in SAS...and even after years it was sometimes buggy,
> keeping variable values from previous iterations of a SAS program.
> One very nice advantage with SAS is that after data is saved in libraries,
> there is a GUI showing all the libraries and the datasets inside the
> libraries with sizes and dates. While we can save Rdata objects in an
> external file, the base package doesn't seem to have the same capabilities as
> SAS.
>
> Graphics:
> SAS graphics were quite mediocre, and generating customized labels was
> cumbersome. Porting code from one Windows platform to another produced
> unpredictable and sometimes unworkable results.
> It has been easier in R: I anticipate that I will be able to port R Windows
> code to *NIX and generate the same graphics.
>
> Batch commands:
> I am working on porting some of my R code to our *NIX server to generate
> reports and graphs on a scheduled basis. Although a few at IBM did this with
> SAS, I would have found doing this fairly daunting.
>
>
> -Leif
Leif,
Those are excellent points. I'm especially glad you mentioned data
manipulation. I find that R is far ahead of SAS in this respect
although most people are shocked to hear me say that. We are doing all
our data manipulation (merging, recoding, etc.) in R for pharmaceutical
research. The ability to deal with lists of data frames also helps us a
great deal when someone sends us a clinical trial database made of 50
SAS datasets.
Frank
>
> -----------------------------
> Leif Kirschenbaum, Ph.D.
> Senior Yield Engineer
> Reflectivity
> [EMAIL PROTECTED]
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
--
Frank E Harrell Jr Professor and Chair School of Medicine
Department of Biostatistics Vanderbilt University
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html