R语言笔记(二):数据结构(下)

R语言笔记(二):数据结构(下)

数据结构主要内容包括:

  • 1. 向量(vector)
    • 1.1 向量的创建
    • 1.2 向量的命名
    • 1.3 常用向量的生成
    • 1.4 向量的访问与编辑
  • 2. 列表(list)
    • 2.1 列表的创建
    • 2.2 列表的命名
    • 2.3 列表的访问与编辑
    • 2.4 列表与向量的转换
  • 3. 矩阵(matrix)
    • 3.1 矩阵的创建
    • 3.2 矩阵行/列的命名
    • 3.3 矩阵的访问与编辑
    • 3.4 矩阵的运算
  • 4. 数据框(dataframe)
    • 4.1 数据框的创建
    • 4.2 数据框行/列的命名
    • 4.3 数据框的访问与编辑
    • 4.4 绑定/解绑数据框
  • 5. 数组(array)
    • 5.1 数组的创建与元素的访问
    • 5.2 数组的命名
    • 5.3 数组与向量的转换
  • 6. 因子(factor)
    • 6.1 因子的创建
    • 6.2 因子的编辑

本文主要介绍数据框、数组、因子的使用。

数据结构(上)链接:


4. 数据框(dataframe)

4.1 数据框的建立

data.frame("列名1" = values, "列名2" = values, ..., stringsAsFactors = F)
# stringsAsFactor = T 将数据框中的字符型数据转换为因子型;stringsAsFactors = F 则不做处理
# 数据框具备“自动补齐”功能,各个列包含的数据行数互为整数倍关系
# 如第一列有 4 行数据,第二列有 8 行数据,第三列有 16 行数据

L3 <- LETTERS[1:3]
fac <- sample(L3, 10, replace = TRUE)
(d <- data.frame(x = 1, y = 1:10, fac = fac))
# 第一列元素 1 被重复了 10 次

4.2 数据框行/列的命名

第一种方法就是在建立数据框的时候直接命名,第二种如下所示:

row.names(x) <- c("行名1", "行名2", ...)
colnames(x) <- c("列名1", "列名2", ...)

4.3 数据框的访问与编辑

数据框访问与编辑行/列/单个元素的方式同矩阵一致,另外还可以通过以下方式访问某一列:

x$列名

4.4 绑定/解绑数据框

我们经常会使用 $ 访问数据框的某一列,但需要重复访问时,就稍显麻烦,我们就可以通过“绑定”数据框简化代码:

a <- c(1,2,3)
b <- c(1,2,3,4,5,6)
x <- data.frame("a" = a, "b" = b)
x$a
# [1] 1 2 3 1 2 3
attach(x)
a
# [1] 1 2 3
detach(x)
# 解绑数据框

注意 attach() 后访问的列不会进行自动补齐。

5. 数组(array)

5.1 数组的创建与元素的访问

array(data, dim = dimensions, dimnames = list())
# data 为数组中的元素,dimensions 表示维数,dimnames 为各个维度命名

dim1 <- c("a1", "a2")
dim2 <- c("b1", "b2", "b3")
dim3 <- c("c1", "c2")
x <- 1: 4
y <- array(x, dim = c(2, 3, 2), dimnames = list(dim1, dim2, dim3))
y # 可以将第一维和第二维看成是矩阵的行和列,第三维看成是表格序数
# 返回 c1,c2 两个表格,每个表格都是一个 2×3 的矩阵
, , c1

b1 b2 b3
a1 1 3 1
a2 2 4 2

, , c2

b1 b2 b3
a1 3 1 3
a2 4 2 4

可以看到,数组也具有“自动补齐”的功能。若要访问数组中的元素,则使用对应维数的“坐标”进行访问。

y[1, 2, 2] # [1] 1
y[2, 3, 2] # [1] 4
y[2, , ] # 返回每一个“表格”的第二行(注意是纵向填入数据)
c1 c2
b1 2 4
b2 4 2
b3 2 4
y[2, 2, ] # 返回每一个“表格”的第二行第二列数据
c1 c2
4 2
y[2, , 2] #返回第二个“表格”的第二行数据
b1 b2 b3
4 2 4

5.2 数组的命名

dimnames()

5.3 数组与向量的转换

a <- 1: 24
dim(a) <- c(2, 3, 4)
# 将向量 x 转换为 2×3×4 的三维数组

6. 因子(factor)

6.1 因子的创建

factor(data, ordered = T, levels = c(最低, ..., 最高), labels = c(最低-因子名, ..., 最高-因子名))
# ordered = T 因子化后的变量为定序变量,ordered = F 因子化后的变量为无序变量,二者均为分类变量
# levels 手动设定因子排序方式
# labels 对因子水平进行命名

satisf <- c("满意", "很满意", "满意", "不满意", "很满意", "很不满意")
satisf <- factor(satisf, ordered = T, levels = c("很不满意", "不满意", "满意", "很满意"), 
                 labels = c("I", "II", "III", "IV"))
satisf
[1] III IV III II IV I
Levels: I < II < III < IV

6.2 因子的编辑

factor(data, ordered = , levels = , labels = , exclude = )
# exclude 可用于删除特定因子

data <- c("A", "C", "C", "B", "D")
data <- factor(data, exclude = "C")
data
[1] A <NA> <NA> B D
Levels: A B D

可以看到 C 被 NA 替代。

编辑于 2020-02-03 03:19