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] > > ______________________________________________ > R-help@stat.math.ethz.ch 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 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html