一、R语言简介
R语言是一种用于统计计算和绘图的编程语言,它是由新西兰奥克兰大学的 Ross Ihaka 和 Robert Gentleman 开发的。R语言支持向量和矩阵计算,因此也可以用于数值分析和线性代数。它主要应用于数据分析、统计学习、数据挖掘、数据可视化等领域。
R语言的优势是它具有很好的可重复性和可扩展性。通过使用扩展包(packages),用户可以轻松地扩展R语言的功能,并在开源社区中共享代码。R语言也有很好的图形界面,比如Rstudio,使得数据分析和可视化更加直观和便捷。
R语言的语法类似于英语,易于学习和阅读。它具有许多内置的函数和数据类型,包括向量、矩阵、数组、数据框(data-frame)和列表。对于数据处理和数据分析,R语言的操作和函数库非常丰富。除此之外,R语言还支持其他编程语言的集成,如 Python 和 C++ 等。
二、R的安装
我个人比较喜欢R语言自带的分析界面,没有安装Rstudio,我用的R版本是4.2.1
。
链接:https://pan.baidu.com/s/1w-Efrm5LDNiQLUIu0o9COg
提取码:6666
上面是百度网盘的下载地址。下载完成后,直接双击exe文件。
-
选择语言
-
下一步
-
选择安装路径
-
下一步
-
直接选择默认,下一步
-
如果需要快捷栏启动就勾上
-
安装成功
三、数据基础
3.1 常用数据类型
3.1.1 向量(vector)
向量适用于存储数值类型、字符型或逻辑型数据的一维数组。
- 向量语法
vector_name <- c(element1, element2, element3, ...)
- 创建向量对象
# 创建数值型向量
age <- c(25, 30, 35, 40, 45)
# 创建字符型向量
name <- c("John", "Joe", "Alex", "Mary", "Lucy")
# 创建逻辑型数据
status <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
- 修改向量对象
# 修改数值型向量
age[3] <- 36
age
# 输出:25 30 36 40 45
# 修改字符型向量
name[5] <- "Lily"
name
# 输出:"John" "Joe" "Alex" "Mary" "Lily"
# 修改逻辑向量
status[4] <- FALSE
status
# 输出:TRUE TRUE FALSE FALSE FALSE
3.1.2 列表(list)
列表(list) 是一种非常有用的数据类型,它可以存储任意数量和类型的对象,并且可以使用一组多维索引访问它们。列表可以包含向量、矩阵、数据框、其它列表等数据类型。
- 创建列表对象
使用 list()
函数可以创建一个新的空列表对象。可以使用 [[ ]]
或 $ 索引符号将一个或多个对象添加到列表中。
# 创建空的列表对象
my_list <- list()
# 添加元素到列表对象
my_list[[1]] <- c(1, 2, 3)
my_list[["second"]] <- matrix(1:9, nrow = 3)
my_list$third <- c(2,4,6)
- 访问列表对象
使用 [[ ]]
或 $ 索引符号可以访问列表对象中的元素。以下是访问上面列表对象中的元素的示例 R 代码:
# 使用 [[]] 索引访问列表中的元素
my_list[[1]]
# 输出:1 2 3
# 使用 $ 符号访问具有自定义名称的列表中的元素
my_list$second
# 输出:
# [,1] [,2] [,3]
# [1,] 1 4 7
# [2,] 2 5 8
# [3,] 3 6 9
- 删除列表元素
可以使用 NULL
或 list()
函数来删除列表中的元素。
# 删除第二个元素
my_list[[2]] <- NULL
# 使用空的列表删除第一个元素
my_list[[1]] <- list()
# 重新打印列表对象以查看结果
my_list
# 输出:
# [[1]]
# list()
# $third
# [1] 1 5 7
列表可以搭配任何基本数据类型, 再加上灵活的索引途径,可以让用户更好地掌控复杂的数据结构,从而更方便地进行数据处理。
3.1.3 数组(array)
数组是一种可以存储多维数据的数据类型,多维数据意味着除了行和列之外还可以有多个维度。可以使用 array() 函数来创建一个新数组对象,该函数接受一个向量作为数据输入,以及一个用于指定各个维度大小的整数向量。
- 创建数组对象
使用 array()
函数可以创建一个新的数组对象。 以下是创建一个名为 arr 的数组的示例 R 代码:
# 创建一个 3x4x2 的数组 (行x列x维度)
arr <- array(data = 1:24, dim = c(3, 4, 2))
# 打印数组对象
arr
# 输出
# , , 1
#
# [,1] [,2] [,3] [,4]
# [1,] 1 4 7 10
# [2,] 2 5 8 11
# [3,] 3 6 9 12
#
# , , 2
#
# [,1] [,2] [,3] [,4]
# [1,] 13 16 19 22
# [2,] 14 17 20 23
# [3,] 15 18 21 24
- 访问数组对象
可以使用 [ ]
索引符号访问数组对象中的元素。上面创建的数组对象中,第一个维度的指针先移动,然后是第二个维度的指针,最后是第三个维度的指针。以下是访问上面数组对象中的元素的示例 R 代码:
# 访问第1个元素
arr[1, 1, 1]
# 输出:1
# 访问第2个元素
arr[1, 2, 1]
# 输出:4
# 访问第11个元素
arr[2, 3, 1]
# 输出:8
# 访问最后一个元素
arr[3, 4, 2]
# 输出:24
- 修改数组对象
使用 [ ]
索引符号来修改数组对象中的元素。以下是在数组对象中修改元素的示例 R 代码:
# 修改第1个元素为2
arr[1, 1, 1] <- 2
# 修改第2个元素为5
arr[1, 2, 1] <- 5
# 打印修改后的数组对象
arr
# 输出
# , , 1
#
# [,1] [,2] [,3] [,4]
# [1,] 2 5 7 10
# [2,] 2 5 8 11
# [3,] 3 6 9 12
#
# , , 2
#
# [,1] [,2] [,3] [,4]
# [1,] 13 16 19 22
# [2,] 14 17 20 23
# [3,] 15 18 21 24
3.1.4 矩阵(Matrix)
矩阵(Matrix) 是以二维方式存储的数据类型,每列中的数据类型必须相同。矩阵可以看作是一个具有行和列的数据表格,其中每个单元格存放着一个数值。在 R 语言中,可以使用 matrix()
函数来创建矩阵对象,该函数接受一个向量作为输入数据,以及表示行和列数的整数向量。
- 创建矩阵对象
使用 matrix()
函数可以创建一个新的矩阵对象。以下是创建一个名为 mat 的矩阵的示例 R 代码:
# 创建一个 3x3 的矩阵
mat <- matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, ncol = 3)
# 打印矩阵对象
mat
# 输出
# [,1] [,2] [,3]
# [1,] 1 4 7
# [2,] 2 5 8
# [3,] 3 6 9
在上面的例子中,我们使用 matrix()
函数创建了一个3x3的矩阵对象,其中 data 参数指向一个包含1到9的数字向量,nrow 和 ncol 参数分别是3,表示行和列的大小。
- 访问矩阵对象
使用 [ ]
索引符号访问矩阵对象中的元素。以下是访问上面矩阵对象中的元素的示例 R 代码:
# 访问第1行第2列的元素
mat[1, 2]
# 输出:4
# 访问第3行的所有元素
mat[3, ]
# 输出:3 6 9
# 访问第2列的所有元素
mat[, 2]
# 输出:4 5 6
- 修改矩阵对象
使用 [ ]
索引符号来修改矩阵对象中的元素。以下是在矩阵对象中修改元素的示例 R 代码:
# 修改第1行第2列的元素为10
mat[1, 2] <- 10
# 修改第3行的所有元素为0
mat[3, ] <- c(0, 0, 0)
# 打印修改后的矩阵对象
mat
# 输出
# [,1] [,2] [,3]
# [1,] 1 10 7
# [2,] 2 5 8
# [3,] 0 0 0
在上面的例子中,我们使用 [ ]
索引符号将第一个元素修改为10,将第三行的所有元素修改为0,然后打印修改后的矩阵对象。
矩阵是在 R 语言中最常用、最基本的数据类型之一,因为许多常见的数据分析和统计建模方法都涉及矩阵操作。
3.1.5 数据框(data.frame)
数据框是 R 语言中一种常用的数据类型,是一种表格形式的数据结构,其中每个列可以包含不同的数据类型,但必须保证每个列的元素个数相同。数据框经常用于在 R 语言中进行数据操作和数据分析,包含了多个观测值和变量。可以使用 data.frame()
函数来创建数据框对象,该函数需要指定每个列的名字和它们的值。
- 创建数据框对象
使用 data.frame()
函数可以创建一个新的数据框对象。以下是创建一个名为 df 的数据框的示例 R 代码:
# 创建数据框
df <- data.frame(
name = c("John", "Joe", "Alex", "Mary", "Lucy"),
age = c(25, 30, 35, 40, 45),
height = c(1.75, 1.80, 1.70, 1.68, 1.72)
)
# 打印数据框对象
df
# 输出
# name age height
# 1 John 25 1.75
# 2 Joe 30 1.80
# 3 Alex 35 1.70
# 4 Mary 40 1.68
# 5 Lucy 45 1.72
- 访问数据框对象
数据框可以使用 $ 符号
、[ ]
和 [[ ]]
索引符号进行访问,其中 $ 符号
用于访问列名,不需要指定行数。以下是访问上面示例数据框对象中的元素的示例 R 代码:
# 使用 $ 符号访问列 'name'
df$name
# 输出:John Joe Alex Mary Lucy
# 使用 [ ] 符号访问前三行
df[1:3, ]
# 输出:
# name age height
# 1 John 25 1.75
# 2 Joe 30 1.80
# 3 Alex 35 1.70
# 使用 [ ] 符号访问第二列
df[, 2]
# 输出:25 30 35 40 45
# 使用 [[ ]] 符号访问列 'height'
df[["height"]]
# 输出:1.75 1.80 1.70 1.68 1.72
- 修改数据框对象
使用 $ 符号
或 [ ]
索引符号来修改数据框中的元素。以下是修改上面数据框对象中的元素的示例 R 代码:
# 使用 $ 符号修改列 'age'
df$age <- c(26, 31, 36, 41, 46)
# 使用 [ ] 符号修改第一行的所有列
df[1, ] <- c("Tom", 30, 1.90)
# 打印修改后的数据框对象
df
# 输出:
# name age height
# 1 Tom 30 1.9
# 2 Joe 31 1.8
# 3 Alex 36 1.7
# 4 Mary 41 1.68
# 5 Lucy 46 1.72
在上面的例子中,我们使用 $ 符号
将第一个元素修改为 “Tom”,使用 [ ]
索引符号将第一行的所有列修改为一组新的值,然后打印修改后的数据框对象。
数据框是 R 语言中一种非常实用的数据类型,尤其在数据分析和统计建模中非常常用,因为它可以用于存储和操作特定类型的不同数据。
3.2 常用元素类型
3.2.1 数值型 (numeric)
数值型(numeric) 是一种表示实数或浮点数的 R 语言数据类型。以下是创建和使用数字向量的示例代码:
# 创建数字向量
x <- c(1, 2.5, 3.7, 5.2)
# 打印数字向量
x
# 输出:1.0 2.5 3.7 5.2
# 计算向量的平均值和标准差
mean(x)
# 输出:3.1
sd(x)
# 输出:1.619327
在上面的示例中,我们使用 c()
函数来创建一个数字向量,然后使用 mean()
函数和 sd()
函数计算向量的平均值和标准差。
3.2.2 整型 (integer)
整型(integer) 是一种表示整数的 R 语言数据类型。以下是创建和使用整数向量的示例代码:
# 创建整数向量
y <- c(2L, 4L, 6L, 8L)
# 打印整数向量
y
# 输出:2 4 6 8
# 计算向量的和
sum(y)
# 输出:20
# 计算乘积
prod(y)
# 输出:384
在上面的示例中,我们使用 c()
函数来创建一个整数向量,由于每个元素后都跟着一个 L 表示这是一个整数型,然后使用 sum()
函数和 prod()
函数计算向量的和和乘积。
3.2.3 字符串 (character)
字符串(character) 是一种表示文本字符的 R 语言数据类型。以下是创建和使用字符串的示例代码:
# 创建字符串变量和字符串向量
name <- "Alice"
gender <- "female"
myString <- c("Hello", "World", "!")
# 打印字符串变量和向量
name
# 输出:"Alice"
gender
# 输出:"female"
myString
# 输出:"Hello" "World" "!"
在上面的示例中,我们使用双引号或单引号来表示一个字符串,也可以使用 c()
函数来创建一个字符串向量。
3.2.4 逻辑型 (logical)
逻辑型(logical) 是一种表示真或假的 R 语言数据类型。以下是创建和使用逻辑型的示例代码:
# 创建逻辑型变量和逻辑型向量
a <- TRUE
b <- FALSE
myLogical <- c(TRUE, TRUE, FALSE, FALSE)
# 打印逻辑型变量和向量
a
# 输出:TRUE
b
# 输出:FALSE
myLogical
# 输出:TRUE TRUE FALSE FALSE
在上面的示例中,我们使用TRUE
和FALSE
关键字来分别表示真和假,也可以使用 c()
函数来创建一个逻辑型向量。
3.2.5 复数型 (complex)
复数型(complex) 是一种表示实部和虚部均为数值的复数的 R 语言数据类型。以下是创建和使用复数的示例代码:
# 创建复数变量和复数向量
a <- 1 + 2i
3.2.6 因子类型(factor)
因子(factor) 是 R 语言中一种用于表示分类变量的数据类型,它将一组离散的值映射到一个整数索引,这个整数索引称为因子水平(factor level)。因子变量通常用于存储分类变量,比如性别、文化背景等。
以下是创建和使用因子变量的示例代码:
# 创建一个包含因子变量的数据框
df <- data.frame(
id = 1:5,
gender = factor(c("male", "female", "male", "female", "male"))
)
# 打印数据框
df
# 输出:
# id gender
# 1 1 male
# 2 2 female
# 3 3 male
# 4 4 female
# 5 5 male
# 计算因子变量的水平
levels(df$gender)
# 输出:female male
# 统计因子变量中每个水平的数量
table(df$gender)
# 输出:
# female male
# 2 3
在上面的示例中,我们使用 factor()
函数将字符向量转换为因子变量,并将因子变量存储在一个数据框中。然后我们使用 levels()
函数来获取因子变量的水平,使用 table()
函数来计算因子变量的每个水平数的数量。