回顾这一章的学习,主要讲了一个内容,如何用R基础包进行数据清洗。
数据清洗(Data cleaning)–对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。
数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。
借此,简单的将前面学的内容再复习一遍。
数据准备
df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
## year nitrogen variety block v1 v2 v3 v4
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94
1 了解数据
第一步,先要了解数据,了解数据的结构,了解数据是否有缺失值。
df # 查看数据,数据量小的话可以这样查看,要是数据庞大,要么部分查看,要么点击Rstudio环境中的数据名查看。
## year nitrogen variety block v1 v2 v3 v4
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94
head(df) # 部分查看数据。首部6行。
## year nitrogen variety block v1 v2 v3 v4
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65
tail(df) # 部分查看数据。尾部6行。
## year nitrogen variety block v1 v2 v3 v4
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94
is.na(df) # 查看数据是否有缺失值。
## year nitrogen variety block v1 v2 v3 v4
## [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [11,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [12,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [14,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [15,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [16,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [17,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [18,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [19,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [20,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [21,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [22,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [23,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [24,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
str(df) # 查看数据结构。
## 'data.frame': 24 obs. of 8 variables:
## $ year : chr "2020" "2020" "2020" "2020" ...
## $ nitrogen: chr "N1" "N1" "N1" "N1" ...
## $ variety : chr "a" "a" "a" "b" ...
## $ block : chr "1" "2" "3" "1" ...
## $ v1 : num 1.26 1.2 1.3 1.08 1.05 1.15 1.32 1.28 1.35 1.33 ...
## $ v2 : num 2.14 2.9 3 1.72 1.65 1.35 3.78 4.32 3.95 3.47 ...
## $ v3 : num 3.4 4.1 4.3 2.8 2.7 2.5 5.1 5.6 5.3 4.8 ...
## $ v4 : num 4.66 5.3 5.6 3.88 3.75 3.65 6.42 6.88 6.65 6.13 ...
df$nitrogen <- as.factor(df$nitrogen) # 假设后面由于后面分析的需求,需要将nitrogen设定为因子。
str(df) # 再次查看数据结构。
## 'data.frame': 24 obs. of 8 variables:
## $ year : chr "2020" "2020" "2020" "2020" ...
## $ nitrogen: Factor w/ 2 levels "N1","N2": 1 1 1 1 1 1 2 2 2 2 ...
## $ variety : chr "a" "a" "a" "b" ...
## $ block : chr "1" "2" "3" "1" ...
## $ v1 : num 1.26 1.2 1.3 1.08 1.05 1.15 1.32 1.28 1.35 1.33 ...
## $ v2 : num 2.14 2.9 3 1.72 1.65 1.35 3.78 4.32 3.95 3.47 ...
## $ v3 : num 3.4 4.1 4.3 2.8 2.7 2.5 5.1 5.6 5.3 4.8 ...
## $ v4 : num 4.66 5.3 5.6 3.88 3.75 3.65 6.42 6.88 6.65 6.13 ...
2 子集提取
有时候,出于分析需求,从一个大数据集中选择有限数量的变量来创建一个新的数据集是常有的事。这时候就需要提取我们想要的数据。
df[1:12, 1:6] # 对数据足够了解的情况下,可之间通过行列号提取。
## year nitrogen variety block v1 v2
## 1 2020 N1 a 1 1.26 2.14
## 2 2020 N1 a 2 1.20 2.90
## 3 2020 N1 a 3 1.30 3.00
## 4 2020 N1 b 1 1.08 1.72
## 5 2020 N1 b 2 1.05 1.65
## 6 2020 N1 b 3 1.15 1.35
## 7 2020 N2 a 1 1.32 3.78
## 8 2020 N2 a 2 1.28 4.32
## 9 2020 N2 a 3 1.35 3.95
## 10 2020 N2 b 1 1.33 3.47
## 11 2020 N2 b 2 1.28 2.72
## 12 2020 N2 b 3 1.30 3.90
df[which(df$nitrogen == "N2"),] # 条件选择提取。
## year nitrogen variety block v1 v2 v3 v4
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94
subset(df, nitrogen == "N1", select = 1:6) # subset函数提取,条件为nitrogen为N1,选择的列为1到6列。
## year nitrogen variety block v1 v2
## 1 2020 N1 a 1 1.26 2.14
## 2 2020 N1 a 2 1.20 2.90
## 3 2020 N1 a 3 1.30 3.00
## 4 2020 N1 b 1 1.08 1.72
## 5 2020 N1 b 2 1.05 1.65
## 6 2020 N1 b 3 1.15 1.35
## 13 2021 N1 a 1 1.19 3.61
## 14 2021 N1 a 2 1.21 3.29
## 15 2021 N1 a 3 1.24 3.26
## 16 2021 N1 b 1 1.09 2.71
## 17 2021 N1 b 2 1.28 2.32
## 18 2021 N1 b 3 1.35 1.95
2 数据增删
有时候,对于数据要进行适当的增删才能满足下一步的分析需求。
df$class <- c("A","A","A","A","B","B","B","B","C","C","C","C","A","A","A","A","B","B","B","B","C","C","C","C") # 小数据量的情况下可以使用这样的笨办法增加。
df$v5 <- df$v1 - df$v2 # 通过数据集内列的运算增加。
data.frame(df, v6=c("A","A","A","A","B","B","B","B","C","C","C","C","A","A","A","A","B","B","B","B","C","C","C","C")) # 可通过数据框data.frame函数添加。
## year nitrogen variety block v1 v2 v3 v4 class v5 v6
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 A -0.88 A
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 A -1.70 A
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 A -1.70 A
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 A -0.64 A
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 B -0.60 B
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 B -0.20 B
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 B -2.46 B
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 B -3.04 B
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 C -2.60 C
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 C -2.14 C
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 C -1.44 C
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 C -2.60 C
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 A -2.42 A
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 A -2.08 A
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 A -2.02 A
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 A -1.62 A
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 B -1.04 B
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 B -0.60 B
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 B -2.90 B
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 B -2.40 B
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 C -2.86 C
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 C -1.44 C
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 C -2.20 C
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 C -2.22 C
df[, -10] # 删除无用的数据列。
## year nitrogen variety block v1 v2 v3 v4 class
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 A
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 A
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 A
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 A
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 B
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 B
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 B
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 B
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 C
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 C
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 C
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 C
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 A
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 A
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 A
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 A
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 B
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 B
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 B
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 B
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 C
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 C
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 C
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 C
3 数据重命名
有时候,数据集的变量名并不是我们想要,也许名称太长,太复杂,可以对它进行调整。
colnames(df) <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
library(reshape) # 调用reshape包。
df <- rename(df, c(A="year", B="N", C="types", D="block", E="v1", F="v2", G="v3", H="v4", I="ranks", J="v5")) # 用rename函数对数据集进行变量重命名。
head(df) # 查看数据。
## year N types block v1 v2 v3 v4 ranks v5
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 A -0.88
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 A -1.70
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 A -1.70
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 A -0.64
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 B -0.60
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 B -0.20
4 数据排序
df[order(df$v1),] # 对数据框df按照v1列排序,使用默认的升序。
## year N types block v1 v2 v3 v4 ranks v5
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 B -0.60
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 A -0.64
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 A -1.62
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 B -0.20
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 C -2.20
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 A -2.42
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 A -1.70
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 A -2.08
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 A -2.02
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 C -2.22
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 A -0.88
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 B -3.04
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 C -1.44
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 B -1.04
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 C -1.44
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 A -1.70
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 C -2.60
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 B -2.46
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 C -2.14
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 C -2.60
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 B -0.60
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 C -2.86
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 B -2.40
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 B -2.90
df[order(df$N, -df$v1),] # 对数据集df先按N列升序排列,在N同样下再按v1降序排列。
## year N types block v1 v2 v3 v4 ranks v5
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 B -0.60
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 A -1.70
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 B -1.04
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 A -0.88
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 A -2.02
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 A -2.08
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 A -1.70
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 A -2.42
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 B -0.20
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 A -1.62
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 A -0.64
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 B -0.60
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 B -2.90
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 B -2.40
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 C -2.86
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 C -2.60
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 C -2.14
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 B -2.46
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 C -2.60
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 B -3.04
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 C -1.44
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 C -1.44
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 C -2.22
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 C -2.20
5 数据集合并
是不是又看到了另一种提取子集的方法。
df2 <- cbind(df[,1:3], df$v5) # 合并df数据集1到3列,df的v5列。
df3 <- rbind(df[1:5,], df[20:24,]) # 按行合并df数据集中前5行,和后20到24行。
merge(df2, df3) # 不规则的合并。
## year N types df$v5 block v1 v2 v3 v4 ranks v5
## 1 2020 N1 a -0.88 1 1.26 2.14 3.4 4.66 A -0.88
## 2 2020 N1 a -0.88 2 1.20 2.90 4.1 5.30 A -1.70
## 3 2020 N1 a -0.88 3 1.30 3.00 4.3 5.60 A -1.70
## 4 2020 N1 a -1.70 1 1.26 2.14 3.4 4.66 A -0.88
## 5 2020 N1 a -1.70 2 1.20 2.90 4.1 5.30 A -1.70
## 6 2020 N1 a -1.70 3 1.30 3.00 4.3 5.60 A -1.70
## 7 2020 N1 a -1.70 1 1.26 2.14 3.4 4.66 A -0.88
## 8 2020 N1 a -1.70 2 1.20 2.90 4.1 5.30 A -1.70
## 9 2020 N1 a -1.70 3 1.30 3.00 4.3 5.60 A -1.70
## 10 2020 N1 b -0.64 1 1.08 1.72 2.8 3.88 A -0.64
## 11 2020 N1 b -0.64 2 1.05 1.65 2.7 3.75 B -0.60
## 12 2020 N1 b -0.60 1 1.08 1.72 2.8 3.88 A -0.64
## 13 2020 N1 b -0.60 2 1.05 1.65 2.7 3.75 B -0.60
## 14 2020 N1 b -0.20 1 1.08 1.72 2.8 3.88 A -0.64
## 15 2020 N1 b -0.20 2 1.05 1.65 2.7 3.75 B -0.60
## 16 2021 N2 a -2.90 2 1.40 3.80 5.2 6.60 B -2.40
## 17 2021 N2 a -2.90 3 1.37 4.23 5.6 6.97 C -2.86
## 18 2021 N2 a -2.40 2 1.40 3.80 5.2 6.60 B -2.40
## 19 2021 N2 a -2.40 3 1.37 4.23 5.6 6.97 C -2.86
## 20 2021 N2 a -2.86 2 1.40 3.80 5.2 6.60 B -2.40
## 21 2021 N2 a -2.86 3 1.37 4.23 5.6 6.97 C -2.86
## 22 2021 N2 b -1.44 1 1.28 2.72 4.0 5.28 C -1.44
## 23 2021 N2 b -1.44 2 1.15 3.35 4.5 5.65 C -2.20
## 24 2021 N2 b -1.44 3 1.24 3.46 4.7 5.94 C -2.22
## 25 2021 N2 b -2.20 1 1.28 2.72 4.0 5.28 C -1.44
## 26 2021 N2 b -2.20 2 1.15 3.35 4.5 5.65 C -2.20
## 27 2021 N2 b -2.20 3 1.24 3.46 4.7 5.94 C -2.22
## 28 2021 N2 b -2.22 1 1.28 2.72 4.0 5.28 C -1.44
## 29 2021 N2 b -2.22 2 1.15 3.35 4.5 5.65 C -2.20
## 30 2021 N2 b -2.22 3 1.24 3.46 4.7 5.94 C -2.22
merge(df[1:3,1:6], df[1:3,1:7]) # 共有变量合并。
## year N types block v1 v2 v3
## 1 2020 N1 a 1 1.26 2.14 3.4
## 2 2020 N1 a 2 1.20 2.90 4.1
## 3 2020 N1 a 3 1.30 3.00 4.3
6 数据可视化
par(mfrow=c(1,2)) # 提前设置好图形布局,1行2列,按行排列。
plot(x=df$v1, y=df$v2, type="b",main="Example plot", xlab="v1", ylab="v2", pch=15, col=palette(), cex=2, lty=3, lwd=2) # 绘制点线图。
plot(df$N, df$v1, main="Class plot", xlab="N rates", ylab="variable", col=c("red", "blue"), cex=2) # 分类变量作x轴,系统自动出箱线图。
参考资料:
- 《R语言实战》(中文版),人民邮电出版社,2013.
- 数据清洗,百度,https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97/4402497?fr=aladdin