1. 为什么是R?
现在数据科学,深度学习领域最受欢迎的是Python, 那么为什么要学习R语言,Python 和 R 的优势分别在哪儿?
简单来说,R语言更适用与研究,偏数理统计,小而精,适合将来做科研学术。Python更适用于工业领域,普适性,通用性,计算性能更好,更适合做程序员或者进入企业。
具体可以参考张敬新老师翻译的R用于研究,Python用于生产, 英文原文地址为R is for Reasearch, Python is for Production。
所以首先需要确定自己的需求,R不一定适合每一个人。如果你是想认真学习编程思维,底层逻辑,那么R并不是一个很好地选择。但如果你只是需要一个工具,来帮你实现问题的分析,建模,解释和展示,那么R是一个很好地选择。R语言更适合高校研究从事数据分析,数据可视化,数理统计建模。数据科学的基本流程如图所示,在R上我们可以愉快的实现数据分析的全部流程。
2. 什么是R?什么是Rstudio?
R 是一种运行计算的编程语言, 而 RStudio 是一种集成开发环境 (IDE),它通过添加许多方便的功能和工具来提供接口,使用 RStudio 的界面也使得用 R 变得更加容易。当然还有很多IDE可以用来进行R语言编程,如Sense, RIDE,甚至Jupyter notebook 以及 VS code 也都可以用来编程R,但这些都需要相对更高的门槛,相对更推荐使用Rstudio 进行R编程的全流程工作。
3. 安装R和Rstudio
首先你需要做的就是安装R和Rstudio到你的电脑,顺序一定是先安装R,再安装Rstudio。
3.1 安装R
官网下载地址https://cloud.r-project.org/,但是这个网址是国外的,下载速度较慢。建议用国内的镜像站:
如果你是Windows,Mac os, Linux 用户分别点击对应的 “Download R for windows”, “Download R for (MAC) OS”, “Download R for Linux” 下载最新版本的R-4.1.0即可。
如果是Windows用户建议不要安装在系统盘内,且安装路径一定要是英文,不能有空格,如果Windows系统用户名是中文应先改成英文。
3.2 安装Rstudio
找到 “Installers for Supported Platforms” 按钮,并对应自己的电脑系统下载对应版本的Rstudio客户端。
https://www.rstudio.com/products/rstudio/download/
安装好Rstudio后打开界面展示如下:
4. 怎样在Rstudio里编程?
现在已经设置了 R 和 RStudio,“现在我如何使用 R?”。首先要注意的是,与 Excel、SPSS 等其他提供点击式界面的统计软件程序不同,R 是一种解释性语言。这意味着您必须输入用 R 代码编写的命令。换句话说,你必须在 R 中编码/编程。
虽然使用 R 不需要是经验丰富的编码员/计算机程序员,但如果你是新接触编程语言这里需要了解一些基本编程概念。
介绍一些基本的编程概念和术语。
基本:
-
console pane:您输入命令的地方。
-
Running code 运行代码:通过在控制台中给出命令来告诉 R 执行一个行为的行为。
-
数据类型:integers 整数、 doubles/numerics 双精度/数字、 logicals 逻辑和 characters 字符。整数是像 -1、0、2、4092 这样的值。双精度或数字是一组更大的值,既包含整数,也包含分数和小数值,如 -24.932 和 0.8。逻辑是 TRUE 或 FALSE,而字符是文本,例如“你”、“我”、“R语言真好”,注意,字符通常用引号括起来表示。
-
vectors向量:一系列值。这些是使用 c() 函数创建的,其中 c() 代表“组合”或“连接”。例如, c(2, 11, 22, 33, 91, 99) 创建一个六元素系列的正整数值。
-
factors因子:分类数据通常在 R 中表示为因子。分类数据也可以表示为字符串。如成绩可以分为 优,良,及格。
-
data frames 数据框:它们是 R 中数据集的表示,其中行对应于观测,列对应于描述观测的变量。
-
Conditionals条件:
-
R中=用于赋值,== 用于测试是否相等,例如 3+4 == 7 判断3+4 是否等于7,将返回TRUE。而 3+4 = 7将发生错误
-
布尔代数:TRUE/FALSE 语句和数学运算符,例如 <(小于)、<=(小于或等于)和 !=(不等于)。例如,4 + 2 >= 3 将返回 TRUE,但 3 + 5 <= 1 将返回 FALSE。
-
逻辑运算符:& 表示“与”以及 |代表“或”。例如, (2 + 1 == 3) & (2 + 1 == 4) 返回 FALSE,因为两个子句都不为 TRUE(只有第一个子句为 TRUE)。另一方面, (2 + 1 == 3) | (2 + 1 == 4) 返回 TRUE,因为这两个子句中至少有一个是 TRUE。
-
-
Functions函数,也称为命令:函数在 R 中执行任务。它们接受称为参数的输入并返回输出。可以手动指定函数的参数或使用函数的默认值。
例如,R 中的函数 rnorm() 随机生成正态分布的数。rnorm(n, mean=0, sd=1), n为生成数字的个数,mean均值和sd标准差默认为0和1。你可以自己修改,在命令窗口输入`rnorm(3,mean=2,sd=3)``,按下enter.
5. R packages 安装使用
R各种类型的包package可以说是R最大的特色了,比如最为出名的ggplot2可视化包。那什么是R packages呢?如果把R作为一个手机的底层程序编码,那么package 就是手机上的各个APP。
R一些常用流行的包主要包括:
- 数据导入:
readr导入csv/fwf文件, readxl导入.xls/.xlsx文件, haven导入SPSS/Stata/SAS文件
- 数据处理
tidyverse , data.table
- 数据可视化
ggplot2, cowplot.
5.1 包的安装
- 安装包也建议切换为国内镜像源
点击 [Tools] ---- [Global Options…], 点击 Packages, 点击Change 修改为清华大学镜像源,China(Beijing1)
- 安装官方包,一般情况下大部分常用的包都可以官方安装
install.packages("tidyverse")
install.packages("haven")
- 安装Github来源的包, 需要先安装devtools包后才可以安装github来源的包
install.packages("devtools")
devtools::install_github("tidyverse")
remotes::install_github("tidyverse")
- 加载包
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.3 ✓ purrr 0.3.4
## ✓ tibble 3.1.1 ✓ dplyr 1.0.5
## ✓ tidyr 1.1.3 ✓ stringr 1.4.0
## ✓ readr 1.4.0 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
library(ggplot2)
library(bruceR)
##
## ⚡ bruceR: BRoadly Useful Convenient and Efficient R functions
##
## Loaded R packages:
## [Data]: rio / dplyr / tidyr / stringr / forcats / data.table
## [Stat]: psych / emmeans / effectsize / performance
## [Plot]: ggplot2 / ggtext / cowplot / see
##
## Frequently used functions in `bruceR`:
## set.wd() / Describe() / Freq() / Corr() / Alpha() / MEAN()
## MANOVA() / EMMEANS() / model_summary() / theme_bruce()
- 更新包
update.packages("ggplot2")
# 更新所有包
update.packages()
- 删除包
remove.packages("data.table")
6. Your first Projects 创建你的第一个项目
通过以上的配置对于R,Rstudio和Packages有了基本的认识。现在假设你有一个数据,你想对其进行数据处理分析建模解释等等一系列的工作。那么可以简单分为以下几个步骤:
- 在Rstudio内创建一个Project项目
[File] — [New Project] — [New Directory] — [New Project]
输入你的项目名称【“first project”】,选择项目存储位置,注意存储路径不要有中文。确定,这时候在你屏幕的右上角你就可以看到你的项目名称了。
- 新建R脚本编写R代码
创建 [R Script], 命名"first.R", 保存到你项目的保存文件夹内。
- 查看你的项目路径
getwd()
## [1] "/Users/cpf/Documents/paper/writting_blog/paper_sections"
- 安装和加载需要使用的包
install.packages("tidyverse")
install.packages("bruceR")
library(tidyverse)
library(bruceR)
- 导入数据集
使用import函数可以导入csv,exel等多种格式的文件,优先建议使用这个函数导入。
# mydata = import("~/yourpath/data.csv")
# 也可以使用R自带的数据集
data("weather", package = "nycflights13")
- 查看你的数据集
glimpse(weather)
## Rows: 26,115
## Columns: 15
## $ origin <chr> "EWR", "EWR", "EWR", "EWR", "EWR", "EWR", "EWR", "EWR", "EW…
## $ year <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013,…
## $ month <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ day <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ hour <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, …
## $ temp <dbl> 39.02, 39.02, 39.02, 39.92, 39.02, 37.94, 39.02, 39.92, 39.…
## $ dewp <dbl> 26.06, 26.96, 28.04, 28.04, 28.04, 28.04, 28.04, 28.04, 28.…
## $ humid <dbl> 59.37, 61.63, 64.43, 62.21, 64.43, 67.21, 64.43, 62.21, 62.…
## $ wind_dir <dbl> 270, 250, 240, 250, 260, 240, 240, 250, 260, 260, 260, 330,…
## $ wind_speed <dbl> 10.35702, 8.05546, 11.50780, 12.65858, 12.65858, 11.50780, …
## $ wind_gust <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 20.…
## $ precip <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ pressure <dbl> 1012.0, 1012.3, 1012.5, 1012.2, 1011.9, 1012.4, 1012.2, 101…
## $ visib <dbl> 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,…
## $ time_hour <dttm> 2013-01-01 01:00:00, 2013-01-01 02:00:00, 2013-01-01 03:00…
- 清洗处理你的数据集,本章不侧重分析这个环节。数据处理具体细节可看我另一个回答里推荐的书籍,推荐使用tidyverse工作流处理清晰数据。
R语言数据分析入门推荐书籍
#
mydata2 = weather %>%
select(c(year, month, hour, temp, dewp, humid)) %>% # 选择这些列
filter(year == 2013) %>% # 选择2013年的观测
mutate(yearnew = year + 1) # 创建新列yearnew
glimpse(mydata2)
## Rows: 26,115
## Columns: 7
## $ year <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 20…
## $ month <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ hour <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19,…
## $ temp <dbl> 39.02, 39.02, 39.02, 39.92, 39.02, 37.94, 39.02, 39.92, 39.92,…
## $ dewp <dbl> 26.06, 26.96, 28.04, 28.04, 28.04, 28.04, 28.04, 28.04, 28.04,…
## $ humid <dbl> 59.37, 61.63, 64.43, 62.21, 64.43, 67.21, 64.43, 62.21, 62.21,…
## $ yearnew <dbl> 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 20…
- 导出你修改完的数据集
export(mydata2, file= "~/yourpath/.mydata2.csv")