【R语言】实验一 R 语言数据结构、数据导入与数据处理

系列文章目录

实验一 R 语言数据结构、数据导入与数据处理

实验二 基本数据处理

实验三 数据可视化

实验四 数据分析

实验五 综合应用


实验数据

实验数据下载

1. algae 数据集

season size speed mxPH mnO2 Cl
Cl NO3 NH4 oPO4 PO4 Chla
a1 a2 a3 a4 a5 a6
a7

提示:以下是本篇文章正文内容

一、实验目的

  1. 安装 R 环境,熟悉环境,熟悉 R NOTEBOOK 的用法。
  2. 数据集的创建:数据集(data set)是一个数据的集合,通常以数据库表格的形式出现。
  3. 基本的数据结构:向量、矩阵、数组、数据框、因子、列表。
  4. 数据的输入和导入:R 支持很多种输入和导入。
  5. 处理数据对象的常用函数:如:dim()查看某对象的维度;class()查看某对象的类型;head()查看某对象的开始部分;tail()查看某对象的结尾部分;cbind()按列合并对象;rbind()按行合并对象。

二、实验内容

题目1 基本数据结构练习

  1. 创建数值从 1 到 10,间隔为 2,名称为 A 的向量。
  2. 将数字 1 到 12 每个重复 3 次写入向量 B 中:(1,1,1,…,12,12,12) 提示 rep 函数。
  3. 输出 B 向量的长度和去重后的向量数值。
  4. 输出 A、B 的交集,并集 C ,差集。
  5. 将集合 C 按降序排序。
  6. 选取 C 的第 3 个元素;第 4 到最后的元素;数值在区间大于等于 3 小于 7的元素。
  7. 将数值型向量 C 转化为字符型。
  8. 向量 C 的长度,最大值及其索引。
  9. 将 A 转化成数组类型变量名为 a,查看 a 的类型。
  10. 用 1~20 的数字构成两个 4*5 的矩阵,其中 M1 为按列输入,M2 为按行输入,计算 M3 为 M1+M2;并构建 M4,它由 M3 各列构成,但不包含第 3 列。
  11. 用 1~9 的数字构成一个 3*3 的按列输入的矩阵 M5;求 M5 的对角阵
    M6;计算 M5 与 M6 的矩阵乘法得到 M7;求 M7 的转置矩阵 M8。
  12. 用 1~12 的数字构成一个 4*3 的按列输入的矩阵 M9,求 M9 的列加和;求 M9 的行平均。

题目2 数据的导入和处理对象常用函数练习

  1. 从 csv 文件中读取 algae 数据集赋值给 algae1。
  2. 查看 algae1 的前 10 条数据。
  3. 输出 algae1 的基本统计信息,数据的维度,特征名称,查看season、size和 NO3 各列的数据类型。
  4. 选出季节为夏天的样本存在 newalgael,输出 newalgael 样本行数。
  5. 将 newalgael 的列 cl 中的缺失值用本列得中位数填充。
  6. 将 algae1 删除含有缺失值的样本,输出原始样本的行数和剩余样本行数。
  7. 编辑 algae1 并另存为 algae2(任意修改某个点的值)。
  8. 将 algae1 和 algae2,按行合并得到 algae3,输出 algae1、algae2 和algae3 的样本行数。

三、实现过程与实验结果

题目1 基本数据结构练习

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

题目2 数据的导入和处理对象常用函数练习

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

四、总结

以上就是全部内容。

你可能感兴趣的:(R语言,r语言)