使用 R 语言进行数据分析
软件安装
- R-software
- 如果是在 Windows 上使用,请在网站主页点击
Download R for Windows
,然后点击install R for the first time
,最后点击Download R 4.0.4 for Windows
,下载软件后请自行完成安装。 - R 语言支持软件仅在后台运行,没有图形化界面。
- 如果是在 Windows 上使用,请在网站主页点击
- RStudio
- 直接点击蓝色的
Download
按钮,或者在页面下方选择其他系统版本下载。下载软件后请自行完成安装。
- 直接点击蓝色的
教学资源
在线资源(推荐)
书籍
基本数据类型
R 语言的数据类型,主要有以下这几种:
- 数值型(numerics)
- 整数型(integer)
- 复数型(complex)
- 逻辑型(logical)
- 字符型(characters)
数值型(numerics)
数值型是 R 语言中最基本的数据类型。当我们把一个数字值赋给变量,那变量的类型就是数值型:
整数或小数都可以是数值型变量。但如果按照以上的方法创建,那么整数变量也会被视为小数变量。
整数型(integer)
如果要创建整数型变量,就得使用函数 is.integer
:
> y = as.integer(3)
> y # 输出 y 的值
[1] 3
> class(y) # 输出 y 的类型
[1] "integer"
> is.integer(y) # y 是否为整数?
[1] TRUE
除了使用 is.integer
函数,你也可以附加 L
后缀来实现:
如果要对小数进行取整,我们可以使用函数 as.integer
:
也可以对字符串类型进行解析并取整:
但如果解析的字符串不是数值,那就会出错:
R 语言像 C 语言一样,把整数 1
0
与逻辑 TRUE
FALSE
对应了起来:
复数型(complex)
在 R 语言中,复数变量通过 i
来定义:
如果我们单纯对 -1
开方,那将会出错:
但是对复数 −1+0i
开方,那就没问题:
也可以用强制类型转换来进行运算:
逻辑型(logical)
逻辑型通常通过比较变量而产生:
> x = 1; y = 2 # 样本变量
> z = x > y # x 比 y 大吗?
> z # 输出逻辑变量
[1] FALSE
> class(z) # 输出 z 的类型
[1] "logical"
基本逻辑操作有 &
(与),|
(或), !
(非):
> u = TRUE; v = FALSE
> u & v # 对 u,v 进行 "与" 运算
[1] FALSE
> u | v # 对 u,v 进行 "或" 运算
[1] TRUE
> !u # 对 u 进行 "非" 运算
[1] FALSE
字符型(character)
字符型可通过函数 as.character
进行强制类型转换得到:
要合并两个字符型变量,可以使用函数 paste
:
像 C 语法一样,可以用格式输出以增加可读性,用函数 sprintf
即可:
如果要从字符串中提取子串,可以使用函数 substr
(示例中把第 3
到第 12
个字符之间的字符截取了下来):
如果要把第一个遇见的字符替换成另外一个,可以使用函数 sub
(示例中把 little
替换成了 big
):
向量
R 语言中的向量
向量是一个包含相同类型元素的数组,向量中的成员被官方称为 components。
以下是一个示例向量(包含三个数值变量 2
3
5
):
也可以全部由逻辑型构成:
也可以由字符型构成:
如果想知道一个向量内有多少个成员,可以使用函数 length
:
合并向量
如果要合并两个向量,可以使用函数 c
:
> n = c(2, 3, 5)
> s = c("aa", "bb", "cc", "dd", "ee")
> c(n, s)
[1] "2" "3" "5" "aa" "bb" "cc" "dd" "ee"
注意在上面的例子中,如果合并两个不同数据类型的向量,那合并后的类型将会是向下兼容的(即将比较严格的类型,进行强制类型转换为比较宽松的类型,例如将数值型变成字符型)
向量基本运算
我们先假定两个向量 a
b
:
以下就是向量的基本运算:
> a + b
[1] 2 5 9 15
> a - b
[1] 0 1 1 -1
> 5 * a
[1] 5 15 25 35
> a * b
[1] 1 6 20 56
> a / b
[1] 1.000 1.500 1.250 0.875
如果相加的两个向量成员数量不一致,那么结果将会向下兼容,即输出变量的长度取决于较长的那个:
检索向量
如果要从向量中取出成员,可以使用在 [ ]
中声明索引的方法,也就是 [第几个成员]
:
如果索引前加一个负号,比如 [-3]
,就意味着取出除第三个成员外的其他成员:
如果索引超出了向量的长度,那就会报错:
【更新中】