前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >七步即可学会R语言,从此数据分析不再怕!

七步即可学会R语言,从此数据分析不再怕!

作者头像
AI研习社
发布2018-03-19 15:29:57
2.5K0
发布2018-03-19 15:29:57
举报
文章被收录于专栏:AI研习社AI研习社

本文特约作者为 DataCamp 的联合创始人 Martijn Theuwissen 。更多 R 语言资源请访问这里(http://t.cn/R9Uo2po) ,各种 R 语言源代码也在其中。

这里(http://t.cn/RZ0nGo0)还有一份数据科学备忘清单,能让你从零开始学习数据科学,包括 R 语言。

如果你没有编程经验,或者是对点击式的统计软件更熟悉(而非真正的编程语言), R 语言学起来还是有点难度的。本文的学习方法更适合 R 语言小白,不过老司机们也可以从中获得 R 语言的最新动态。

本文的学习方法是在追求实用性和全面性的不断平衡中建立起来的。这里有许多优质的 R 语言免费资源,但可惜并非全部。我们的资源相当丰富,包括相关文档、在线课程、图书以及更多能让你尽快入门 R 语言的最佳学习资料。

R 语言生成的数据视频:获取链接和观看视频请前往下方链接:

  • http://www.analyticbridge.com/video/from-chaos-to-cluster-part-2
  • http://www.analyticbridge.com/profiles/blogs/shooting-stars

下面是本文提纲:

  • 步骤 0:为什么要学习 R 语言
  • 步骤 1:软件设置
  • 步骤 2:理解 R 语言语法
  • 步骤 3:R 语言的核心 ->packages
  • 步骤 4:帮助?!
  • 步骤 5:数据分析工作流程
    • 5.1 导入数据
    • 5.2 数据操作
    • 5.3 数据可视化
    • 5.4 统计学部分
    • 5.5 报告你的结果

  • 步骤 6:成为 R 语言大牛,发现新大陆

步骤 0:为什么要学习 R 语言

R 语言正迅速成为数据科学的通用语言。它源于学界,但今天你会在越来越多的商业环境中看到 R 语言的身影,它现在成了商业软件公司如 SAS,STATA 和 SPSS 的贡献者。

R 语言的人气每年都在增加,在 2015 年被 IEEE 列入 2015 年十大语言。这表明人们对 R 语言知识的需求在增长,因此学习 R 语言绝对是一项明智的职业投资(根据这项调查 R 语言编程甚至是报酬最高的技能)。

甲骨文(Oracle )、微软(Microsoft )等行业巨头都在逐步加大对 R 语言的产品投入,这种投入在未来几年还会持续增长。

不过,金钱不该是学习一门技术或是编程语言的唯一动力。幸运的是,R 语言能给你的不仅仅是一份薪水。当我们走进 R 语言时,会慢慢熟悉这个多元有趣的圈子。换句话说,R 语言在各种领域的任务中都能得到运用,比如金融、基因序列分析、房地产、付费广告等等,这些也推动了 R 语言的进一步发展。

日常生活中,你也会遇到各种 R 语言的案例和应用,它不仅让事情变得有趣,还能够帮你解决各种各样的问题。祝你玩得开心!

步骤 1:软件设置

真正开始用 R 语言之前,你需要下载一个安装包。R 语言一直在不断升级,自 1993 年问世以来已经发布了好几个不同的版本,它们的名字都很好玩,比如 “世界著名航天员” 和“ 木制圣诞树”。安装 R 语言非常简单,你可以从 Comprehensive R Archive Network(CRAN,https://cran.r-project.org/) 下载基于 Linux、 Mac 和 Windows 不同系统的二进制文件。

R 语言安装完成后,可以安装一个 R 语言的综合开发环境(尽管基本的 R 控制台也能工作)。两个比较完善的 IDE 是 RStudio(https://www.rstudio.com/) 和 Architec(http://www.openanalytics.eu/architect)。如果你更喜欢图形用户界面,还应该检查 R-commander(http://www.rcommander.com/)。

步骤 2:理解 R 语言语法

学习编程语言(比如,R 语言)和自然语言(比如,法语或西班牙语)的方法类似,都是在练中学,学中做。学习 R 语言最好的方式之一,就是通过下面的在线教程:

  • DataCamp 免费的 R 语言辅导入门课程和中级 R 语言编程课程。你可以根据自己的节奏,在你的浏览器上交互式学习 R 语言编程和数据科学。
  • swril 软件包有离线互动的 R 语言编码练习。还有一个不需要安装的在线版本。
  • 在 edX 上你也可以学习微软提供的 R 语言编程入门(Introduction to R Programming )这门课。
  • 在 Coursera 上约翰霍普金斯大学的 R 编程课程( R Programming course )。

除了这些网络教程,还有一些非常好的入门书籍和书面教程:

  • Jared Lander 的人人都能用的 R 语言( R for Everyone,http://www.jaredlander.com/r-for-everyone/)。
  • Robert Kabacoff 的 R 语言实战( R in Action,https://www.manning.com/books/r-in-action)。
  • CRAN 的免费 R 语言入门手册(https://cran.r-project.org/doc/manuals/R-intro.pdf)。

步骤 3:R 语言的核心 - >packages

每个 R 语言包只是一组用于特定目的代码,旨在被其他开发人员重复使用。除了主代码库之外,程序包通常还包括数据、文档和测试。作为 R 语言的用户,可以轻松下载特定的软件包(有些甚至是预先安装好的),并开始使用其功能。每个人都可以开发 R 语言包,也可以与他人共享 R 语言包。

这是一个很强大的概念,也是 R 语言无论是作为一门语言,还是一个社区都非常成功的主要原因之一。也就是说,你不需要自己完成所有核心硬件的编程,也可以知道特定算法或可视化的每个复杂细节。相关软件包成为该功能的接口,你就可以轻松使用开箱即用的功能。所以,了解 R 语言包的生态系统还是挺有用的。

许多 R 语言软件包可从 Comprehensive R Archive Network(CRAN,https://cran.r-project.org/) 获得,您可以使用 install.packages function 函数进行安装。CRAN 的厉害之处在于它可以通过任务视图 Task Views 将包与特定任务联系在一起。或者,你可以在 bioconductor, github 和 bitbucket 上找到 R 语言包。

如果你正在找特定包和相关文档,可以试试 Rdocumentation(http://www.rdocumentation.org/),在这里可以非常方便地搜索到 CRAN,github 和 bioconductor 的软件包。

步骤 4:帮助

很快你会发现,每解决一个 R 语言问题,就会出现五个新的问题。但还好,有很多可以解决的办法:

  • 在 R 语言内,您可以使用内置的帮助系统。例如,“?plot” 命令会提供绘图功能的文档。
  • R 语言强调文档的重要性。前面提到的 Rdocumentation(http://www.rdocumentation.org/) 就是一个不错的网站,可以查看不同软件包和功能的不同文档。
  • Stack Overflow(http://stackoverflow.com/questions/tagged/r) 是一个非常好的资源,它可以找到常见的 R 语言问题答案或向自己提问的答案。
  • 网络上有许多关于 R 语言的博客和帖子,比如 KDnuggets(http://www.kdnuggets.com/) 和 R-bloggers(http://www.r-bloggers.com/)。

步骤 5:数据分析工作流程

一旦了解了 R 语言的语法、软件包生态系统以及获得帮助的方式,就可以开始关注 R 语言如何在数据分析工作中解决日常任务。

5.1 导入数据

在开始执行数据分析之前,首先需要将数据输入到 R 语言中。容易的是你可以把各种数据格式导入到 R 语言中,但难的是不同的类型往往需要不同的方法:

  • Flat files:您可以从预先安装的 utils 包导入带有 read.table() 和 read.csv()等功能的平面文件。导入平面文件数据的特定 R 语言包是 data.table 包的 readr 和 fread()函数。
  • 你可以用 readxl package, gdata package 和 XLConnectt 把 excel 文档导入 R 语言。(Read more on importing your excel files into R,http://blog.datacamp.com/r-tutorial-read-excel-into-r/)
  • haven package 可以将 SAS,STATA 和 SPSS 数据文件导入 R 语言中。外部包可以导入 Systat 和 Weka 格式。
  • 连接特定的软件包(如 RMySQL,RpostgreSQL 和 ROracle 软件包)与数据库。通过 DBI 访问和操作数据库。
  • 抓取网页,可以使用 rvest 等包。 (有关 R 语言的更多信息,请查看 the blog of Rolf Fredheim 的博客,http://blog.rolffredheim.com/2014/02/web-scraping-basics.html。)

想了解更多如何将数据导入 R 语言的信息,请查看 online Importing Data into R tutorial(http://t.cn/R9UiRBq) 和 this post on data importing(http://blog.datacamp.com/r-data-import-tutorial/) 。

5.2 数据操作

使用 R 语言执行数据操作是一个很泛的主题,例如你可以在 RStudio 中使用 R 视频的 Data Wrangling with R 或使用 Data Manipulation with R。下面是在执行数据操作时,应该获取的 R 语言软件包列表:

  • tidyr 包:用于整理数据。
  • stringr 包:用于字符串操作。
  • 处理数据框(如对象)时,最好熟悉 dplyr 软件包(try this course,http://t.cn/RwSrWIF)。如果大量数据明确任务,检查极速 data.table 软件包(请参阅此语法手册帮助)更有意义。
  • 安装 lubridate 包时,运用时间和日期会更加容易些。
  • zoo, xts 和 quantmod 这样的软件包,则为 R 语言中的时间序列分析提供了极大的支持。

5.3 数据可视化

R 之所以成为数据分析师和科学家最中意的分析工具(没有之一),最重要的原因之一是它的数据可视化功能非常之强大。正如 FlowingData(https://flowingdata.com/) 上展示出的所有可视化内容,大量的美图都是用 R 来实现。R 画出来的图究竟有多美?咳咳,请参照这张著名的脸书图片:facebook visualization。

用 R 作出的信用卡诈骗分析图 --- 包含事件发生的时间、地点和损失额(查看资源,http://t.cn/R9U62yt)

如果你想用 R 做可视化,建议花点时间学习一下 ggplot2 软件包。它是 R 语言在画图制表方面最受欢迎的软件包。ggplot2 使用了图像语法的集约应用,所以很直观(你可以持续不断地建造图像的各个部分,就像玩乐高一样)。有很多软件包资源可供学习,比如,互动代码教程,是 Hadley Wickham 做的一个备忘清单和即将出版的新书。

除了 ggplot2,还有几种其他的软件包也可以帮你创造出更讨喜的图像,有很多优质学习资源帮助你快速掌握。我们精选出来了一些:

  • ggvis 用于互动网页图形(查看教程,http://t.cn/R9U6bRe)
  • googleVis(https://github.com/mages/googleVis) 用于谷歌图表的接口
  • 基于 R 的 Plotly(https://plot.ly/r/)

如果你想获得更多可视化的软件包,请查看 CRAN 任务视图(http://t.cn/RKHR5Mn)。画图的时候碰到问题的话,这篇文章也许有用。除了那些 “传统” 图像,R 也可处理和可视化空间坐标数据。在静态地图上,可用 ggmap 这样的软件包让空间坐标数据和模型更直观,来源可以是谷歌地图开放街区地图。另一个推荐的软件包是由 Trulia 的 Ari Lamstein 开发的 choroplethr,或者 tmap 软件包。如果你想了解更多,请参看这个教程:Introduction to visualising spatial data in R(https://cran.r-project.org/doc/contrib/intro-spatial-rl.pdf)。

5.4 统计学部分

如果你是统计学的新手,下面有一些详实的资源解释了在使用 R 时需要的基本概念:

  • Andrew Conway’s Introduction to statistics with R (在线互动编程课程,http://t.cn/R9U6SVJ)
  • Data Analysis and Statistical Inference 由杜克大学出品 (网上免费课程)
  • Practical Data Science With R (图书,http://t.cn/R9UX7GV)
  • Data Analysis for life sciences 哈佛大学出品 (网上免费课程,http://t.cn/RSekUes)
  • Data Science Specialization by Johns Hopkins 由 Johns Hopkins 出品 (还是那个免费课程,http://t.cn/RfA3ucG)
  • A Survival Guide to Data Science with R (图书,http://togaware.com/onepager/)

注意这些资源是针对新手入门的。如果想更进一步学习,可以看看用 R 来实现机器学习的各种资源。图书的话,有 Mastering Machine Learning with R(http://t.cn/R9UXVy1) 和 Machine Learning with R(http://t.cn/R9UXMcu) ,这两本书很好地解释了不同的概念。网上资源的话,有 Kaggle Machine Learning(http://t.cn/R9UXixi) 教程来实现不同的概念。

此外,还有些有趣的博客助你开启机器学习之门,比如 Machine Learning Mastery(http://t.cn/8Fmu6GH) 或者这个(http://t.cn/R9UXN2a)。

5.5 报告你的结果

不管是模型、可视化图像还是其他什么,最好的分享方式就是用动态文档。R Markdown(http://rmarkdown.rstudio.com/,以 knitr 和 pandoc 为基础的)是一个相当厉害的工具,它利用可重现的方式报告你的数据分析结果,并且可以存为各种形式的文档:html,word,pdf,ioslides 等等。这里有 R markdown 基础知识的四个说明教程:Reporting with R Markdown(http://t.cn/R9UXjdm)。在创建好自己的 markdown 文件之后,别忘了还有这张备忘单(http://t.cn/R9UXRAA)。

第六步:成为 R 语言大牛,发现新大陆

R 是一种快速发展的语言。其在学术和商业上受青睐的程度正在急速攀升,由此 R 的新功能和新工具软件包也在随之增加。下面罗列一些我们最喜欢的新技术和新软件包:

  • HTML widgets(http://www.htmlwidgets.org/) 帮你创建互动可视化网站,比如动态地图(leaflet,http://rstudio.github.io/leaflet/)、时间序列数据制图(dygraphs,http://rstudio.github.io/dygraphs/)和互动表格(DataTables,http://rstudio.github.io/DT/)。如果你自己创建一个,请参看由 RStudio 出品的教程(http://t.cn/R9UaRd5)。
  • 最近,另外一个呼声很高的技术是 Shiny(http://shiny.rstudio.com/)。用 Shiny 你可以在 R 里面创建你自己的互动网站应用,比如这些(http://shiny.rstudio.com/gallery/)。网上有完整的学习门户,能专门建立自己的 Shiny 应用软件,在此处(http://shiny.rstudio.com/tutorial/)查看。
  • 最近,越来越多人关注怎样在云程序中运行 R。如果你想做这项工作的话,不妨看看以下教程:running R on AWS(http://t.cn/RPEV**v),R programming language for Azure(http://t.cn/R9USXO5) 和 RStudio Server on Digital Ocean(http://t.cn/R9USKpy)。

有了 R 的经验之后,Hadley Wickham 写的 Advanced R(免费书,http://adv-r.had.co.nz/)会让你的 R 技能更上一层楼。另外,也可以开始和 Kaggle (数据挖掘和预测模型评比的网络平台)上的数据科学爱好者们一起练习 R 技能。在那里你有机会接触有趣的数据,比如说,巨大的数据集(https://www.kaggle.com/c/titanic)。

看了这么多,你是不是已经开始准备动手写软件包了?玩得开心咯!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档