实验一 R 语言数据结构、数据导入与数据处理
实验二 基本数据处理
实验三 数据可视化
实验四 数据分析
实验五 综合应用
实验数据下载
1. algae 数据集
season | size | speed | mxPH | mnO2 | Cl |
Cl | NO3 | NH4 | oPO4 | PO4 | Chla |
a1 | a2 | a3 | a4 | a5 | a6 |
a7 |
提示:以下是本篇文章正文内容
1.创建数值从1到10,间隔为2,名称为A的向量。
A <- seq(1, 10, 2)
A
## [1] 1 3 5 7 9
2.将数字 1 到 12 每个重复 3 次写入向量B中:(1,1,1,…,12,12,12)。
B <- rep(1:12, each = 3)
B
## [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9
## [26] 9 9 10 10 10 11 11 11 12 12 12
3.输出 B 向量的长度和去重后的向量数值。
# B向量的长度
length(B)
## [1] 36
# 去重后的向量数值
unique(B)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
4.输出 A、B 的交集、并集 C、差集。
# A、B的交集
intersect(A, B)
## [1] 1 3 5 7 9
# A、B的并集C
C <- union(A, B)
C
## [1] 1 3 5 7 9 2 4 6 8 10 11 12
# A、B的差集
setdiff(B, A)
## [1] 2 4 6 8 10 11 12
5.将集合 C 按降序排序。
sort(C, decreasing = T)
## [1] 12 11 10 9 8 7 6 5 4 3 2 1
6.选取 C 的第 3 个元素;第 4到最后的元素;数值在区间大于等于 3 小于 7的元素。
# C的第3个元素
C[3]
## [1] 5
# C的第4到最后的元素
C[-(1:3)]
## [1] 7 9 2 4 6 8 10 11 12
# C的数值在区间大于等于3小于7的元素
subset(C, C >= 3 & C < 7)
## [1] 3 5 4 6
7.将数值型向量 C 转化为字符型。
# C的类型
class(C)
## [1] "numeric"
# 数值型向量C转化为字符型
D <- as.character(C)
# D的类型
class(D)
## [1] "character"
8.向量 C 的长度,最大值及其索引。
# 向量C的长度
length(C)
## [1] 12
# C的最大值
C[which.max(C)]
## [1] 12
# C的最大值的索引
which.max(C)
## [1] 12
9.将 A 转化成数组类型,变量名为 a,查看 a 的类型。
# A的类型
class(A)
## [1] "numeric"
# A转化为数组类型
a <- as.array(A)
# a的类型
class(a)
## [1] "array"
10.用 1~20 的数字构成两个 4*5 的矩阵,其中 M1 为按列输入,M2 为按行输入,计算 M3 为 M1+M2;并构建 M4,它由 M3 各列构成,但不包含第 3 列。
# M1按列输入
M1 <- matrix(1:20, c(4, 5))
M1
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 5 9 13 17
## [2,] 2 6 10 14 18
## [3,] 3 7 11 15 19
## [4,] 4 8 12 16 20
# M2按行输入
M2 <- matrix(1:20, c(4, 5), byrow = TRUE)
M2
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
## [3,] 11 12 13 14 15
## [4,] 16 17 18 19 20
# M3=M1+M2
M3 <- M1 + M2
M3
## [,1] [,2] [,3] [,4] [,5]
## [1,] 2 7 12 17 22
## [2,] 8 13 18 23 28
## [3,] 14 19 24 29 34
## [4,] 20 25 30 35 40
# M4不包含M3第三列
M4 <- M3[, -3]
M4
## [,1] [,2] [,3] [,4]
## [1,] 2 7 17 22
## [2,] 8 13 23 28
## [3,] 14 19 29 34
## [4,] 20 25 35 40
11.用 1~9 的数字构成一个 3*3 的按列输入的矩阵 M5;求 M5 的对角阵M6;计算 M5 与 M6 的矩阵乘法得到 M7;求 M7 的转置矩阵 M8。
# M5
M5 <- matrix(1:9, c(3, 3))
M5
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
# M5的对角阵M6
M6 <- diag(diag(M5))
M6
## [,1] [,2] [,3]
## [1,] 1 0 0
## [2,] 0 5 0
## [3,] 0 0 9
# M7=M5*M6
M7 <- M5 %*% M6
M7
## [,1] [,2] [,3]
## [1,] 1 20 63
## [2,] 2 25 72
## [3,] 3 30 81
# M7的转置矩阵M8
M8 <- t(M7)
M8
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 20 25 30
## [3,] 63 72 81
12.用 1~12 的数字构成一个 4*3 的按列输入的矩阵 M9,求 M9 的列加和;求 M9 的行平均。
# M9
M9 <- matrix(1:12, c(4, 3))
M9
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
# M9的列加和
colSums(M9)
## [1] 10 26 42
apply(M9, 2, sum)
## [1] 10 26 42
# M9的行平均
apply(M9, 1, mean)
## [1] 5 6 7 8
1.从 csv 文件中读取 algae 数据集赋值给 algae1。
algae1 <-
read.csv("R\\data\\ex1\\algae.csv")
2.查看 algae1 的前 10 条数据。
head(algae1, n = 10)
3.输出 algae1 的基本统计信息,数据的维度,特征名称,查看 season、size和 NO3 各列的数据类型。
# 基本统计信息
summary(algae1)
# 数据维度
dim(algae1)
## [1] 200 18
# 特征名称
colnames(algae1)
## [1] "season" "size" "speed" "mxPH" "mnO2" "Cl" "NO3" "NH4"
## [9] "oPO4" "PO4" "Chla" "a1" "a2" "a3" "a4" "a5"
## [17] "a6" "a7"
# season列数据类型
class(algae1$season)
## character
# size列数据类型
class(algae1$size)
## character
# NO3列数据类型
class(algae1$NO3)
## numeric
4.选出季节为夏天的样本存在 newalgael,输出 newalgael 样本行数
# 季节为夏天
newalgael <- algae1[algae1$season == 'summer', ]
# newalgael行数
nrow(newalgael)
## [1] 45
dim(newalgael)[1]
## [1] 45
length(newalgael[, 1])
## [1] 45
5.将 newalgael 的列 Cl 中的缺失值用本列得中位数填充。
# 查看缺失值
is.na(newalgael$Cl)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# 缺失值填充
newalgael$Cl[is.na(newalgael$Cl)] <- median(newalgael$Cl, na.rm = TRUE)
# Cl列数据
newalgael$Cl
## [1] 73.250 8.690 6.300 7.000 12.536 20.083 30.523 54.190 27.233
## [10] 32.056 32.056 4.326 3.136 32.540 34.037 12.146 36.248 53.102
## [19] 94.405 63.510 85.982 58.331 47.229 32.056 7.838 57.848 1.549
## [28] 131.400 48.429 12.000 30.125 11.088 39.000 51.113 53.000 69.000
## [37] 43.000 151.833 5.326 2.200 3.860 7.613 23.250 12.444 82.852
6.将 algae1 删除含有缺失值的样本,输出原始样本的行数和剩余样本行数。
# 原始样本行数
nrow(algae1)
## [1] 200
# 删除含缺失值的样本
algae1 <- na.omit(algae1)
# 剩余样本行数
nrow(algae1)
## [1] 184
7.编辑 algae1 并另存为 algae2(任意修改某个点的值)。
algae2 <- edit(algae1)
8.将 algae1 和 algae2按行合并得到 algae3,输出 algae1、algae2 和algae3 的样本行数。
# algae1、algae2按行合并
algae3 <- rbind(algae1, algae2)
# algae1样本行数
nrow(algae1)
## [1] 184
# algae2样本行数
nrow(algae2)
## [1] 184
# algae3样本行数
nrow(algae3)
## [1] 368