R-Guru Smile design: how to one in SIlhouette Studio ยป Smart Silhouette Resource Hub

  • Home
  • Compare with SAS

C. Compare with SAS

This section discusses the similarities and differences between SAS and R.  While most everything from SAS can be replicated in R, there is a steep learning curve since R concepts and process flow are more object oriented. R has meanings for special characters such as [], {} and () for example.  In addition, most of R syntax consists of functions which are similar to SAS functions. So, knowing how to call SAS functions will help to understand, write and execute R functions. 

R has SQL query type functions that enable filter records, subset variables and summary processing.  Finally, R processes functions as a collection of independent sequence of steps.  So, for example, variables can be created one-by-one with left variable assignments or combined when wrapped in a R function. 

With so many SAS programmers learning R, it makes sense that an R SAS package was created.  With the SASSY package, SAS programmers can have a more seamless transition between R and SAS.  With the SASSY package, SAS programmers can almost replicate reviewing logs, reviewing datasets, and program data steps, formats and reports.  There are R packages and functions to replicate Proc Freq, Proc Means and Proc Report.  It is important to realize that although SAS has tools to integrate with R and R has packages to replicate SAS programming, the objective of learning R is to consider it a standalone complete toolbox in its own right that can be used entirely independent of SAS.

          Similar to SAS, R functions resemble many features of the Data Step.



          Compare and Contrast SAS Procedures and R Functions

          proc print data=d1; var _all_; run; d1 displays all records, head

          (d1)  displays first 5 records, tail(d1) displays the last few records

          To subset, first create R object based on subset and selected variables and then display all records

          proc freq data=d1; tables sex*race; run;

          table(d1$sex, d1$race)


          proc univariate;


          proc sort data=dm2; by sex race; run;

          dm2[order(dm1$sex, dm1$race)] 

           proc format;

          In Vectors: sex_code <- c(‘M’, ‘M’, ‘M’, ‘F’, ‘M’) # 1. data values in simple vector to store data values

          sex_decode <- c(‘M’=’Male’, ‘F’=’Female’) # 2. named vector data = ‘label’ for values similar to proc format

          sex <- sex_decode[sex_code] # 3. converts values to labels sex_code vector is subset of sex_code vector

          • As Functions: age_cat <- vectorize(function(x) { # x is input value
          • if (x < 18) { # condition
          • ret <- "< 18" # return label
          • } else if (x >= 18 & x < 24) {
          • ret <- "18 to 24"
          • } else if (x >= 24 & x < 45) {
          • ret <- "24 to 45"
          • } else if (x >= 45 & x < 60) {
          • ret <- "45 to 60"
          • } else if (x >= 60) {
          • ret <- "> 60"
          • } else {
          • ret <- "Unknown"
          • }
          • return(ret) })

          df$age_cat <- age_cat(df$age) # apply function to age variable to create age_cat variable 

          proc means;
          • summarise(AllPages = sum(Pages),
          • AvgLength = mean(Pages),
          • AvgRating = mean(MyRating),
          • AvgReadTime = mean(read_time),
          • ShortRT = min(read_time),
          • LongRT = max(read_time),
          • TotalAuthors = n_distinct(Author)) 
           proc contents;



           proc compare;

          cmp <- comparedf(mockstudy, mockstudy2, by = "case", tol.vars = c("._ ", "case"), int.as.num = TRUE)


           proc report;


          Section Objectives

          • Understand and be able to apply SASSY Package for Tables, Lists and Graphs
          • Know how to apply SQL methods in R programming
          • Understand the difference between SAS macros and R programming
          • Know how to apply Tidyverse Package 

          An Introduction to SAS Data Steps [Blog, New to Programming]

          Learning SAS by Diagrams and Examples [New to Programming]

          Powered by Wild Apricot Membership Software