『壹』 如何高效地使用RStudio
RStudio Server 是 RStudio 公司打造的一款基于 Web 的开源编辑器,如果你熟悉 RStudio的桌面版本,那么使用RStudio Server对你来说基本上没什么难度。
在
实际的工程中,我们的服务器大多是基于Linux的,比如常见的 ubuntu、centos
等。这些操作系统有时并不提供图形化界面,这时候RStudio的服务器版本就派上用场了。启动RStudio
Server后,进入在浏览器中进入某一个页面后就可以像桌面版一样使用RStudio编辑器。当R的代码在服务器上出现bug了,线上的hotfix是
在所难免的,这时候必然会用到 RStudio Server 应个急。
这一次,我们将继续利用Docker神器,快速初始化RStudio Server环境的配置,并结合Git实现代码的版本控制。
准备
一个 Ubuntu 服务器
第一步:安装 RStudio Server
首先,我们通过docker 安装一个标准的RStudio Server
docker pull quantumobject/docker-rstudio
docker run -d -p 8787:8787 quantumobject/docker-rstudio
这样在你的电脑的8787端口就可以访问到rstudio的登陆界面了。
第二步:初始化 RStudio 账号
接着,我们需要初始化一个rstudio的账号
docker exec -it container-id /bin/bash
adser harryzhu # 设置新用户名
passwd harryzhu # 设置该用户的密码
mkdir /home/harryzhu # 初始化工作空间
chmod -R harryzhu /home/harryzhu # 给工作空间赋权
第三步:安装 git
然后,我们进入rstudio的服务器,我们打算引入git版本控制
sudo apt-get install git-core
第四步:解决 ssh 的认证问题
使用 git 的过程可能遇到SSL certificate problem。对于ssh的问题,我们可以选择建立一个ssh认证的key,也可以在git中设置为忽略。
生成一个key:
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
连续按下回车,跳过密码设置
显示秘钥信息:
sudo cat /root/.ssh/id_rsa.pub
如果没有ssh认证的需求,也可以选择忽略:
git config --global http.sslVerify false
第五步:在 RStudio Server 中配置Git
在最上方的菜单栏中可以选择Project Options。
接着填写配置。
第六步:克隆 Git 项目到本地
Git 功能已经集成在 RStudio-Server 中了,在新建项目时可以选择新建一个Version Control 的 Git 项目。
大功告成!
参考资料
docker-rstudio 手册
张丹老师的 RStudio-Server 配置实战
Rstudio 官方 git 解决方案
刘坤老师的 Git 中文教程
---------------------------------------------------------------------------------------------------------------
概述
本文根据 Rstudio Webinars 的教程资源对Rstudio流的R语言教程做一个汇总,可以看到Rstudio对统计报告的Web化和工程化做了大量贡献。感谢Rstudio的众多工程师在开源的道路上的贡献!
谢溢辉:LaTex/Word的统计报告大逃亡之Rmarkdown生态
教学视频地址
在可交互、可复用的统计报告中,谢溢辉将介绍一众R包,包括 knitr、rmarkdown、htmlwidgets、DT、leaflet以及shiny。
快速标准的论文书写# $something$ 或者 $$something$$ 可以解决数学公式的问题
# 利用 bib 文件和[@something] 可以解决引用的问题
# 同样的,你也可以根据一些机构要求引入标准的模板。
参考谢溢辉的Rmarkdown论文
参考谢溢辉的bib文件
屏蔽源码# ```{r echo=F}屏蔽源代码
# ```{r, fig.width=5, fig.height=4} 设置配图大小
# 脚注
代码段内存共享
利用cache选项复用代码和数据
Sys.sleep(5)
rnorm(1)
输出其他语言代码
利用engine选项选择代码引擎,驱动python、R、scala、Rcpp、bash、perl、node等
x = 'hello, python
world!'
print(x)
print(x.split(' '))
交互式文档
利用yaml配置中的runtime选项
---
author: Harry Zhu
output: html_document
runtime: shiny
---
同理,你也可以选择输出slide、pdf或者word,你甚至可以给html定制一个css皮肤。
在我看来,rmarkdown是一款超越Zeppelin和iPython notebook的产品。
最总要的意义在于,学术工作者和工程师们不仅仅可以摆脱格式对创作的束缚专注于代码和文档,更是随意输出pdf、slide、html、word、latex等多种格式,形成强有力的跨界冲击。
谢溢辉本人有超过10年以上的LaTex使用经验,他的rmarkdown和knitr造福了一代学术工作者,显然LaTex和Word的体系在这种降维攻击下已经摇摇欲坠。
Hadley Wickham:R与大数据共舞
教学视频地址
R是一门为小数据探索和开发设计的语言,但在生产中R和大数据在一起还能发挥作用吗? 我们定义数据量大于单机内存的数据为大数据。让我们对比一下大数据与小数据的生命周期。
一个小数据分析项目的生命周期:
阐明:熟悉数据、模板解决方案
开发:创建有效模型
产品化:自动化与集成
发布:社会化
一个大数据分析项目的生命周期:
切片:抽取部分数据
阐明:熟悉数据、模板解决方案
开发:创建有效模型
扩展:使用到整个数据集
产品化:自动化与集成
发布:社会化
dplyr与数据读取
教学视频地址
PackageDBMSsrc_sqlite()SQLitesrc_mysqlMySQLsrc_postgresPostgreSQLlibrary(bigquery) src_bigquery()Google BigQuery
显示SQLshow_query(clean)
中间缓存
collapse()返回正在处理的结果
# 抽取 1% 的训练数据
random <- clean %>%
mutate(x = random()) %>%
collapse() %>%
filter(x <= 0.01) %>%
select(-x) %>%
collect()
数据存储
_to() 根据本地的data frame 在数据库创建一个表
# air为connection名称,query5为data frame,"gains"为表名
_to(air, query5, name = "gains")
# 关闭连接
rm(air)
# 垃圾收集器
gc()
Hadley Wickham:ETL
教学视频地址
本节将讨论一个有效的数据分析/数据科学问题框架,包括:
数据读取 readr/httr/DBI
数据清洗 tidyr/jsonlite
数据处理 dplyr/rlist
数据可视化 ggplot2/ggvis
数据建模 broom
broom:快速分析install.packages("broom")
# 查看相关例子
browseVignettes(package="broom")
Hadley Wickham是RStudio的首席科学家,并兼任统计莱斯大学的兼职教授。他将一一介绍他认为你应该知道的各种R包,并概述大数据和R,但主要是解释为什么他相信你不应该担心大数据的问题。
garrettgman:packrat与虚拟化技术
教学视频地址
你
是否有过这样与人合作开发的经历:在自己机器上运行完美的R代码,复制到另外一台同事的机器上运行就有很多R包需要重新安装,有的R包甚至依赖于不同的版
本?现在,在不使用Docker或Vagrant等全局虚拟化技术的条件下,只需要运用packrat包,就可以保证你的R项目的依赖问题被很好的解决,
一次运行,到处运行。
if(!require(packrat)){install.packages("packrat")}
getOption("repos") # 显示代码镜像源
packrat:: bundle() # 打包当前环境并虚拟化
packrat:: unbundle(bundle="xxx.tar.gz",where=".") # 加载已经打包过的环境
packrat::opts$local.repos("~/R") # 设置本地repos为路径
packrat::install_local("pryr") # 从本地安装
Hadley Wickham:Git与团队协作
教学视频地址
团队协作:利用Git 和 GitHub,你可以很轻松的与人协作,你不再需要用邮件附件来备份文档,或者在Dropbox上为争夺编辑权限而争吵。相反,你可以独立工作,最后只需要合并你们的成果就可以。
版本控制: Git 在我们制造重大错误时都允许我们回滚到之前的任意时间点。我们也可以回顾我们之前所做的一起历史记录,跟踪bug的形成过程。
『贰』 如何用Rstudio+knitr制造Pdf
有点复杂埃。。这么短讲不清楚。。。我写的仅供参考,以R官网的说法为准。 一般先点右上角新建一个project(一般是new directory),类型是package,其他设置看自己喜好啦。然后要填写DESCRIPTION,比如作者、概述、包的版本、license、依赖哪些..
『叁』 SAS与R的对决 谁好使
SAS与R的对决:谁好使?
翻译 | JosephYX
来自SAS资源资讯列表
摘要
尽管在工业界还是被 SAS 所统治,但是 R 在学术界却得到广泛的应用,因为其免费、开源的属性使得用户们可以编写和分享他们自己的应用。然而,许多正在获得数据分析相关学位的学生们由于缺乏 SAS 经验的情况而在找工作的路上困难重重,与此同时,他们要面对从学校熟悉的 R向 SAS 转型的痛苦。理想情况是,你需要知道所有可能的编程语言,工作的时候使用与工作情况最匹配的那个,当然这个基本上是痴人说梦。我们的目的就是展示这两种差异巨大的语言各自优点,并且共同发挥他们的优势,我们同时还要指出那些不使用 SAS 好多年的、现在正在使用 R语言的人们的一些误解和偏见,因为他们已经很少关注 SAS 的发展和进步了。
前言
我们选取 SAS 和 R 的原因是因为他们是目前在统计领域中最有统治地位的两个编程语言。现在我们注意到一个不好的现象,就是在学术界重度使用R的用户认为R在被SAS霸占的工业界有具有相当优势的,然而熟练掌握这两个软件对于想在数据分析领域取得小有成就的年轻人来说很关键。教授误解加上对某个软件的偏好往往对学生有着不利的引导,因此需要在这里指出:教授们,别偷懒了,对某种语言的主观偏好将会影响学生的钱途。
SAS经常有一些更新(有点慢,sxlion注),非SAS程序员由于没有技术跟进往往并不知情。SAS绘图模块就是一个快速发展并成长的例子,然而许多人并不注意到这些升级以至于他们仍然固执的使用 R画图。SAS另一个不广为人知的例子是SAS可以轻松自定义函数,这正是 R 的强项。这个SAS过程步(PROC)有全面的语法检查、翔实的文档和技术支持;然而一个新的使用者很可能不知道这些工具可用,或者根本不知道它们的存在。另外,SAS 还拥有卓越的培训课程,网络及用户组分享资源,不同相关主题的大量书籍。知道并合理的使用这些技术以及工具 有助于减少使用 SAS的畏惧之心。
相关问题讨论
本文就在我们学院碰到的一些共同误解的地方,在此对比列出两种语言的优缺点。当然还有更多的争论在进行中,但是本文汇中我们将选取最为普遍的来进行讨论。我们希望能够消除误解,并且尽可能地为那些不能及时跟进R或SAS的分析人士提供新的信息。
统计方法的新进展
SAS
优点:SAS 的软件及算法都是经过检验的,SAS 有技术支持去快速解决用户的需求。 如果需要的话,SAS 会尝试在已存在的步骤中嵌入新的方法,例如增加一个选项或者新增一个语句(statement),因此用户不需要学习另外一个过程步。SAS也 会发布最新通讯来详细说明软件的更新。
缺点:更新升级较慢。
R
优点:用户可以快速实施新方法,或者寻找已经存在的软件包。很容易学习和理解新方法,因为学生们可以看到代码中的函数。
缺点:R 文档的更新都是通过用户进行的,所以新的方法并没有被很好调试和检验。开发者们散布于各地,而并没有在一起来进行团队合作的开发。
在这个问题上,SAS 和 R 的优缺点是互补的。对于 R,有人认为它的代码是开放的,可以看到 R 是如何工作的,这对于拥有相关背景的人是比较容易理解的。然而对于 SAS,它的过程步是预装的,文件中对不同的语句(Statement)及选项( Option) 存储了大量的数学公式。如果用户真的想看到底层程序,这个也是很容易实现的。对两种语言的使用着者来说,不管是学生还是其它用户,只是运行代码的话对于两种语言是没有什么不同的。你运行SAS,不需要知道它在干什么,类似的是,你运行R时,也不需要知道它在后台调用的函数。你所做的就是按章操作而已。
画图
SAS
优点:SAS画图模块正变得越来越灵活、精良和易于使用。在一些分析过程步(PROCs) 中,ODS Graphics可以自动的生成一些图形,而不需要额外的代码。这使得用户多了一个选择,即可以使用默认的图表生成图表,也可以自己来创造个性化的图表。
缺点:图形背后的模板语言(TL)是庞大及不易使用的,特别是对于新手来说。新的高级功能如交互式绘图功能( interactive graphs),对于新手来说也是难以掌握的。
R
优点:可以简单的生成漂亮的图表,还可以使用循环语句来生成动画。
缺点:在 R 中图表功能与统计分析无关,绘图和分析是相互独立的。用户必须自己来决定什么样的图形是合适的,使用效果的好坏取决于用户们的统计背景和喜好。尽管改变图形去达到特别的维度或角度并不是一个简单事儿。
SAS9.2 之前版本的图表功能不足是 R 更吸引人的一个主要原因之一。R的一个最好的特性之一就是其图表功能的高质量性和易用性。但是,当前 SAS/GRAPH 搭配 ODS Graphics 及 SG 过程在软件中增加了制图的能力。联合使用 ODS graphics 和 PROCS 可以使用户简单地生成与分析相关的展示图表。 特定的绘图过程步如PROCSGPLOT,SGPANEL和SGSCATTER等越来越多,当然需要的一定代码来实现。另外,SAS 中还有一些其他不错的绘图选择,如 SGDESOGNER 和 SAS Enterprise Guide。
函数及可重复使用的代码
SAS
优点:SAS有可在 DATA 和 PROC 步使用的大量函数和自定义函数。另外强大无所不能的、也可以被DATA步和PROC步使用的宏语言。宏变量可定义为局部或者全局类型。
缺点:编写自定义函数和详细的宏代码需要深厚的编程知识来确保正确性。
R
优点:在 R 中编写函数很简单,用户也可以通过上传自己的函数到 R-CRAN 上与其 它用户分享。
缺点:编写自定义函数需要深厚的编程知识来确保正确性。变量是严格的局部变量。在这一点上两种软件拥有类似的利弊。SAS 的早期用户运行自己的定制函数主要取决于宏程序的编写,这也是 R 用户认为其低效及笨重的原因。然而,SAS 9 版本的 PROC FCMP允许用户编写个性化的函数,SAS 9.2 版本又允许用户在 DATA 及 PROC 步中调用这些函数。 这对于简单的统计函数是很有用的,对于更加复杂的统计函数也可以通过 IML 语言来实现。
SAS 及 R 两种语言都面临着怎样有效地、正确的使用函数,这就需要用户在函数编写的过 程中拥有深厚的编程背景。从好的角度来说,一个程序员需要知道他们编写的是什么;危险的是,其它人可以下载一个 SAS 宏或者 P 程序包来使用,尽管他们不知道其内在工作原理, 甚至不知道其正确性。所以,有了对宏及函数适当的了解,再来分享它们并应用于具体的需求是很方便的。
免费软件
SAS
优点:SAS 有OnDemand 版本的软件,免费提供给学位颁发机构。
缺点:真正的 SAS 和 JMP 并不是免费的。OnDemand 版本对使用何种操作系统有一 些限制,而且据反映运行速度很慢。
R
优点:R 是完全免费。
缺点:开源软件对于大公司来讲都会有安全方面的担忧。
SAS公 司 为 教 育 机 构 提 供 的 免费 替 代 品 可 以 保 证 教 授 们 在 课 堂 上 的 使 用 。 对 于 OnDemand 的安装过程和速度需要注意。总之,SAS 和 JMP 不是免费的,公司需要使用许 可来使用该软件。R 可以免费的安装,但许多参与论战的博主们认为如果那些正在使用 SAS 的公司去使用 R,将会花费远远超过 SAS 授权费用的资源和财力,例如重写代码、构建新的团队、招聘新的专业人员等等。而且对于那些分析结果需要经得起严格检验要求的公司, 可能 SAS 更加适合。还没有现存分析框架的小公司可以来探讨是选择历史悠久、资源丰富的付费软件(SAS),还是要选择虽然免费、但是还需要其它先期投资(如员工的知识背景, 编写及调试代码)的软件(R)。最终,从时间和金钱的角度来衡量,SAS 和 R 的花费可能 是基本接近的。
用户支持
SAS
优点:SAS 有丰富的网上参考资料,专业的技术支持,专业的培训课程,许多优秀 的出版书籍,一个紧密的用户组及网络社区。SAS 的问题可以直接反映给技术支 持部门,他们会与用户一起来解决。
缺点:真的没想到。
R
优点:R 有很好的示例手册,网上参考材料,R 邮件列表和 R 聚会。
缺点:用户们取决于其它用户对于软件的看法及建议。因为 R 的开发者散布于全球 各地,所以全球的用户是缺乏联系的。程序包(Package)并不是由 R 软件的开发 核心团队来编写的,所以导致了程序的不完善甚至有时候会对结果的正确性有所怀 疑。另外,很难去直接寻找一个针对具体问题的人员或者团队。
SAS 所提供的卓越的支持是他们以客户为中心设计产品的亮点。SAS 支持的优点对初 学者是理想的帮助,其大量的细节也使资深用户受益匪浅。R 较为混乱的参考资料和匮乏的技术支持在需要寻找帮助时困难重重。这违背了 R 的开发设计者的初衷。
数据处理
SAS
优点:SAS 可以处理任意类型和格式的数据。DATA 步的设计纯粹就是为了数据的管 理,所以 SAS 擅长处理数据。利用丰富的选项,SAS 可以将大数据处理的很好,拼表以及 PROC SQL 也可以减少运行时间。
缺点:在 DATA 步骤中 SAS 中的DATA步有非明示的循环算法,因此使用者的编程思维需要改变以符合SAS的运行逻辑。
R
优点:R 在最初就被认为是更加适合大数据的。它对于矩阵的操作和排序的设计是非常高效的。R 也可以很好的进行各种基于分析的数据模拟。
缺点:R 的设计更加关注统计计算以及画图功能,所以数据的管理是比较耗时的,而且不如在 SAS 中那么明晰。其中一个主要的原因就是:对于各种不同类型的数据,在 R 中进行很好的数据处理是比较难以掌握的。
数据处理的重要性经常在统计编程中被忽视了,但是它确实是非常关键的,因为实际的数据非常糟糕,不能直接应用于分析。纯粹地使用 R 的学生们对于得到的数据往往有不切实际的期望,而学习 SAS 是一个有效的方法去解决怎样整理原始的数据。SAS可以对大而繁杂的数据集进行管理和分析,而 R更着重于进行分析。
当处理复杂数据时,R 的面向对象的数据结构会遇到很多问题,并且R还缺乏一个内在的循环过程。在SAS中,应用标准化工具经常会进行如下操作:合并含有大量缺失数据的复杂数据集,再生成及修改其中的变量。而在R中,进行复杂的数据处理操作是没有标准化的,而且经常会导致更加复杂的过程。
SAS与R软件运行时间的快慢对比取决于任务。如SAS可以通过设置 MEMLIB,从而像R一样使用内存(而非硬盘)来提升运行速度。但在R中,没有这样的硬件驱动,只能使用内存来执行。
安装
SAS
优点:SAS所有的分析功能及授权都被整体打包在一起安装。升级授权证书是非常容易。
缺点:首次安装或升级到一个新的版本是很耗时且有点麻烦的。但是这比在课堂上向学生们讲述如何使用这个软件简单1000倍。现在越来越多的学生们在课堂上使用Macs系统的笔记本,但是SAS没有Mac版,意味着这部分学生无法使用 SAS。
R
优点:R 和其最常用的用户界面 RStudio 在 Window、Mac 和 Unix 环境下都很容易安 装和打开,且安装速度都很快。
缺点:运行必须知道满足需求的程序包,然后搜索、安装、了解具体功能。截止原文发表时,共有 4379 个可用程序包,这一数量还在每天增加。在提供了更多选择的 同时,也增加了搜寻的时间和难度。
SAS 的获得对用户来说比较困难,首次安装也是比较麻烦的。但是一旦安装完成了,有关软件本身的问题就很少了,对于特别的分析,也不需要额外的程序包或者步骤了。R 中 相反,安装非常简单,但对于额外分析,需要另外安装程序包,浪费了安装软件所节省的时间。
报表
SAS
优点:SAS 通过很多有用的过程步来生成详细漂亮的报表。
缺点:能提供更详尽报表的过程如 TABULATE、REPORT 等,在能正确而有效的使用前,将为有一个艰难的学习曲线等待你跨越。
R
优点:报表方面,R拥有诸多利器。Sweave包可以创造包含文字、表格和图形的 PDF 文件,其中图形可以LaTeX 和 R 命令来装扮。另一个新的程序包 Knitr 可以快速生成格式限制较少的网页内容。
缺点:R 没有一个模式化的方式来生成报表,所以需要在编程上花一些功夫。报表的生成对于 R 来说是一个比较新的方向,所以它不如 SAS 来的简单和快速。在 R 中,Sweave 和 Knitr 是报表这方面的领先的程序包,但是学习起来也比较困难。
重度报表使用用户应该了解这些以上不同,尽管学习 SAS 的报表功能需要花费一些时间,但是一旦掌握了就很有价值并有很高的灵活性。而从最基础学习 R 的报表功能也许不需要像 SAS 那样花那么多时间。
结论
我们可以看到解决 R 与 SAS 的辩论是三合一的。第一,就像在任何一个统计编程社区 一样,我们知道这个PK是没有一个最终赢家。两种软件各有优缺点。他们有共存的必要,而学术上的教学中,他们也有共存的必要。如果学生们能够明确他们的需求并合理的应 用,那样会获得更好的效果。如果只给学生教授一种软件是有局限性的,这样会使他们难以发挥学习另外一种软件的潜力。第二,用户们需要保持他们的工具箱与时俱进。SAS 和 R 都有一些很不错的 学习网站去介绍最新 的技术上的进步。 SAS 技 术支 持 网 站 http://support.sas.com 有许多最新的动态,如 Focus Areas、E-newsletters、RSS 种子和博客。R 博客网站 http://www.r-bloggers.com 包含了许多用户贡献的新闻和练习。第三,最理想的是学习两种软件并将其融合于分析中。这里有许多方法可以尝试,例如用 SAS 的 IML 和 SAS 的 IML/Studio(IML 是 SAS 的一个加载项)功能,或者通过使用 SAS X Statement 执行外部命 令,使 R 代码在 SAS 中转化成 SAS 命令来运行。对于 R 的用户们,通过转化 R 到 SAS 的 用户界面,可以同时使用 2 种软件。通过使用两种软件可以使处理及分析数据变得事半功倍, 而且使所有的用户都满意。
『肆』 SAS与R优缺点讨论 从工业界到学界
SAS与R优缺点讨论:从工业界到学界
尽管在工业界还是被 SAS 所统治,但是R在学术界却得到广泛的应用,因为其免费、开源的属性使得用户们可以编写和分享他们自己的应用。我们的目的就是展示这两种差异巨大的语言各自优点,并且共同发挥他们的优势,我们同时还要指出那些不使用SAS 好多年的、现在正在使用 R语言的人们的一些误解和偏见,因为他们已经很少关注 SAS 的发展和进步了。
前言
我们选取 SAS 和 R的原因是因为他们是目前在统计领域中最有统治地位的两个编程语言。现在我们注意到一个不好的现象,就是在学术界重度使用R的用户认为R在被SAS霸占的工业界有具有相当优势的,然而熟练掌握这两个软件对于想在数据分析领域取得小有成就的年轻人来说很关键。
SAS经常有一些更新,非SAS程序员由于没有技术跟进往往并不知情。SAS绘图模块就是一个快速发展并成长的例子,然而许多人并不注意到这些升级以至于他们仍然固执的使用R画图。SAS另一个不广为人知的例子是SAS可以轻松自定义函数,这正是 R的强项。这个SAS过程步(PROC)有全面的语法检查、翔实的文档和技术支持;然而一个新的使用者很可能不知道这些工具可用,或者根本不知道它们的存在。另外,SAS还拥有卓越的培训课程,网络及用户组分享资源,不同相关主题的大量书籍。知道并合理的使用这些技术以及工具有助于减少使用SAS的畏惧之心。
统计方法的新进展
SAS:
优点:SAS 的软件及算法都是经过检验的,SAS 有技术支持去快速解决用户的需求。如果需要的话,SAS会尝试在已存在的步骤中嵌入新的方法,例如增加一个选项或者新增一个语句(statement),因此用户不需要学习另外一个过程步。SAS也会发布最新通讯来详细说明软件的更新。
缺点:更新升级较慢。
R:
优点:用户可以快速实施新方法,或者寻找已经存在的软件包。很容易学习和理解新方法,因为学生们可以看到代码中的函数。
缺点:R文档的更新都是通过用户进行的,所以新的方法并没有被很好调试和检验。开发者们散布于各地,而并没有在一起来进行团队合作的开发。
在这个问题上,SAS 和 R 的优缺点是互补的。对于 R,有人认为它的代码是开放的,可以看到 R是如何工作的,这对于拥有相关背景的人是比较容易理解的。然而对于SAS,它的过程步是预装的,文件中对不同的语句(Statement)及选项( Option)存储了大量的数学公式。如果用户真的想看到底层程序,这个也是很容易实现的。对两种语言的使用着者来说,不管是学生还是其它用户,只是运行代码的话对于两种语言是没有什么不同的。你运行SAS,不需要知道它在干什么,类似的是,你运行R时,也不需要知道它在后台调用的函数。你所做的就是按章操作而已。
画图
SAS:
优点:SAS画图模块正变得越来越灵活、精良和易于使用。在一些分析过程步(PROCs) 中,ODSGraphics可以自动的生成一些图形,而不需要额外的代码。这使得用户多了一个选择,即可以使用默认的图表生成图表,也可以自己来创造个性化的图表。
缺点:图形背后的模板语言(TL)是庞大及不易使用的,特别是对于新手来说。新的高级功能如交互式绘图功能( interactivegraphs),对于新手来说也是难以掌握的。
R:
优点:可以简单的生成漂亮的图表,还可以使用循环语句来生成动画。
缺点:在 R中图表功能与统计分析无关,绘图和分析是相互独立的。用户必须自己来决定什么样的图形是合适的,使用效果的好坏取决于用户们的统计背景和喜好。尽管改变图形去达到特别的维度或角度并不是一个简单事儿。
SAS9.2 之前版本的图表功能不足是 R更吸引人的一个主要原因之一。R的一个最好的特性之一就是其图表功能的高质量性和易用性。但是,当前 SAS/GRAPH 搭配 ODSGraphics 及 SG 过程在软件中增加了制图的能力。联合使用 ODS graphics 和 PROCS可以使用户简单地生成与分析相关的展示图表。特定的绘图过程步如PROCSGPLOT,SGPANEL和SGSCATTER等越来越多,当然需要的一定代码来实现。另外,SAS 中还有一些其他不错的绘图选择,如SGDESOGNER 和 SAS Enterprise Guide。
函数及可重复使用的代码
SAS:
优点:SAS有可在 DATA 和 PROC步使用的大量函数和自定义函数。另外强大无所不能的、也可以被DATA步和PROC步使用的宏语言。宏变量可定义为局部或者全局类型。
缺点:编写自定义函数和详细的宏代码需要深厚的编程知识来确保正确性。
R:
优点:在 R 中编写函数很简单,用户也可以通过上传自己的函数到 R-CRAN 上与其它用户分享。
缺点:编写自定义函数需要深厚的编程知识来确保正确性。变量是严格的局部变量。在这一点上两种软件拥有类似的利弊。SAS的早期用户运行自己的定制函数主要取决于宏程序的编写,这也是 R 用户认为其低效及笨重的原因。然而,SAS 9 版本的 PROCFCMP允许用户编写个性化的函数,SAS 9.2 版本又允许用户在 DATA 及 PROC步中调用这些函数。这对于简单的统计函数是很有用的,对于更加复杂的统计函数也可以通过 IML 语言来实现。
SAS 及 R两种语言都面临着怎样有效地、正确的使用函数,这就需要用户在函数编写的过程中拥有深厚的编程背景。从好的角度来说,一个程序员需要知道他们编写的是什么;危险的是,其它人可以下载一个SAS 宏或者 P程序包来使用,尽管他们不知道其内在工作原理,甚至不知道其正确性。所以,有了对宏及函数适当的了解,再来分享它们并应用于具体的需求是很方便的。
用户支持
SAS:
优点:SAS 有丰富的网上参考资料,专业的技术支持,专业的培训课程,许多优秀的出版书籍,一个紧密的用户组及网络社区。SAS的问题可以直接反映给技术支持部门,他们会与用户一起来解决。
R:
优点:R 有很好的示例手册,网上参考材料,R 邮件列表和 R 聚会。
缺点:用户们取决于其它用户对于软件的看法及建议。因为 R的开发者散布于全球各地,所以全球的用户是缺乏联系的。程序包(Package)并不是由 R软件的开发核心团队来编写的,所以导致了程序的不完善甚至有时候会对结果的正确性有所怀疑。另外,很难去直接寻找一个针对具体问题的人员或者团队。
数据处理
SAS:
优点:SAS 可以处理任意类型和格式的数据。DATA 步的设计纯粹就是为了数据的管理,所以 SAS擅长处理数据。利用丰富的选项,SAS 可以将大数据处理的很好,拼表以及 PROC SQL 也可以减少运行时间。
缺点:在 DATA 步骤中 SAS中的DATA步有非明示的循环算法,因此使用者的编程思维需要改变以符合SAS的运行逻辑。
R:
优点:R 在最初就被认为是更加适合大数据的。它对于矩阵的操作和排序的设计是非常高效的。R也可以很好的进行各种基于分析的数据模拟。
缺点:R 的设计更加关注统计计算以及画图功能,所以数据的管理是比较耗时的,而且不如在 SAS中那么明晰。其中一个主要的原因就是:对于各种不同类型的数据,在 R 中进行很好的数据处理是比较难以掌握的。
数据处理的重要性经常在统计编程中被忽视了,但是它确实是非常关键的,因为实际的数据非常糟糕,不能直接应用于分析。纯粹地使用 R的学生们对于得到的数据往往有不切实际的期望,而学习 SAS是一个有效的方法去解决怎样整理原始的数据。SAS可以对大而繁杂的数据集进行管理和分析,而 R更着重于进行分析。
当处理复杂数据时,R的面向对象的数据结构会遇到很多问题,并且R还缺乏一个内在的循环过程。在SAS中,应用标准化工具经常会进行如下操作:合并含有大量缺失数据的复杂数据集,再生成及修改其中的变量。而在R中,进行复杂的数据处理操作是没有标准化的,而且经常会导致更加复杂的过程。
SAS与R软件运行时间的快慢对比取决于任务。如SAS可以通过设置MEMLIB,从而像R一样使用内存(而非硬盘)来提升运行速度。但在R中,没有这样的硬件驱动,只能使用内存来执行。
报表
SAS:
优点:SAS 通过很多有用的过程步来生成详细漂亮的报表。
缺点:能提供更详尽报表的过程如 TABULATE、REPORT等,在能正确而有效的使用前,将为有一个艰难的学习曲线等待你跨越。
R:
优点:报表方面,R拥有诸多利器。Sweave包可以创造包含文字、表格和图形的 PDF 文件,其中图形可以LaTeX 和 R命令来装扮。另一个新的程序包 Knitr 可以快速生成格式限制较少的网页内容。
缺点:R 没有一个模式化的方式来生成报表,所以需要在编程上花一些功夫。报表的生成对于 R 来说是一个比较新的方向,所以它不如 SAS来的简单和快速。在 R 中,Sweave 和 Knitr 是报表这方面的领先的程序包,但是学习起来也比较困难。
重度报表使用用户应该了解这些以上不同,尽管学习 SAS的报表功能需要花费一些时间,但是一旦掌握了就很有价值并有很高的灵活性。而从最基础学习 R 的报表功能也许不需要像 SAS那样花那么多时间。
结论
我们可以看到解决 R 与 SAS的辩论是三合一的。第一,就像在任何一个统计编程社区一样,我们知道这个PK是没有一个最终赢家。两种软件各有优缺点。他们有共存的必要,而学术上的教学中,他们也有共存的必要。如果学生们能够明确他们的需求并合理的应用,那样会获得更好的效果。如果只给学生教授一种软件是有局限性的,这样会使他们难以发挥学习另外一种软件的潜力。第二,用户们需要保持他们的工具箱与时俱进。SAS和 R 都有一些很不错的学习网站去介绍最新的技术上的进步。第三,最理想的是学习两种软件并将其融合于分析中。对于 R 的用户们,通过转化R 到SAS 的用户界面,可以同时使用 2种软件。通过使用两种软件可以使处理及分析数据变得事半功倍,而且使所有的用户都满意。