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 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

Reply via email to