數(shù)據(jù)準(zhǔn)備
df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 數(shù)據(jù)導(dǎo)入吏廉。
df # 查看數(shù)據(jù)泞遗。
## 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
5.3 數(shù)據(jù)處理難題的一套解決方案
df[9] <- df$v1-df$v2 # df增加新的一列。
df # 顯示數(shù)據(jù)席覆。
## year nitrogen variety block v1 v2 v3 v4 V9
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 -0.88
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 -1.70
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 -1.70
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 -0.64
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 -0.60
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 -0.20
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 -2.46
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 -3.04
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 -2.60
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 -2.14
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 -1.44
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 -2.60
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 -2.42
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 -2.08
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 -2.02
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 -1.62
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 -1.04
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 -0.60
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 -2.90
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 -2.40
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 -2.86
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 -1.44
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 -2.20
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 -2.22
options(digits = 3) # 限定數(shù)據(jù)輸出的小數(shù)點(diǎn)后數(shù)字的位數(shù)史辙。
df # 再次顯示數(shù)據(jù)df。
## year nitrogen variety block v1 v2 v3 v4 V9
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 -0.88
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 -1.70
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 -1.70
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 -0.64
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 -0.60
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 -0.20
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 -2.46
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 -3.04
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 -2.60
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 -2.14
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 -1.44
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 -2.60
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 -2.42
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 -2.08
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 -2.02
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 -1.62
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 -1.04
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 -0.60
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 -2.90
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 -2.40
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 -2.86
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 -1.44
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 -2.20
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 -2.22
a12 <- scale(df[,c(8,9)]) # 第8列和第9列不好比較佩伤,先進(jìn)行標(biāo)準(zhǔn)化聊倔。
mean_row <- apply(a12, 1, mean) # 計(jì)算每行的均值。
df <- cbind(df, mean_row) # 將行平均值加入數(shù)據(jù)框df畦戒。
df # 顯示數(shù)據(jù)方库。
## year nitrogen variety block v1 v2 v3 v4 V9 mean_row
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 -0.88 0.1171
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 -1.70 -0.0684
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 -1.70 0.0794
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 -0.64 -0.1206
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 -0.60 -0.1602
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 -0.20 0.0348
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 -2.46 0.0192
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 -3.04 -0.1084
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 -2.60 0.0471
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 -2.14 0.0718
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 -1.44 0.0806
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 -2.60 -0.0268
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 -2.42 -0.1682
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 -2.08 -0.0985
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 -2.02 -0.0470
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 -1.62 -0.2215
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 -1.04 0.1278
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 -0.60 0.2832
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 -2.90 0.1594
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 -2.40 0.1446
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 -2.86 0.0459
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 -1.44 0.0806
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 -2.20 -0.2013
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 -2.22 -0.0707
y1 <- quantile(df$mean_row, c(0.8, 0.6, 0.4, 0.2)) # 計(jì)算列mean_row的百分位數(shù)。
y1 # 顯示結(jié)果障斋。
## 80% 60% 40% 20%
## 0.0952 0.0468 -0.0430 -0.1132
df$grade[mean_row >= y1[1]] <- "A" # 重編碼新的分類變量grade纵潦,大于等于mean_row列第1分位數(shù)的賦值為A。
df$grade[mean_row < y1[1] & mean_row >= y1[2]] <- "B" # 重編碼新的分類變量grade垃环,大于等于mean_row列第2分位數(shù)邀层,且小于第1分位數(shù)的賦值為B。
df$grade[mean_row < y1[2] & mean_row >= y1[3]] <- "C" # 重編碼新的分類變量grade遂庄,大于等于mean_row列第3分位數(shù)寥院,且小于第2分位數(shù)的賦值為C。
df$grade[mean_row < y1[3] & mean_row >= y1[4]] <- "D" # 重編碼新的分類變量grade涛目,大于等于mean_row列第4分位數(shù)秸谢,且小于第3分位數(shù)的賦值為D凛澎。
df$grade[mean_row < y1[4]] <- "E" # 重編碼新的分類變量grade,小于第4分位數(shù)的賦值為E估蹄。
df # 顯示數(shù)據(jù)df塑煎。
## year nitrogen variety block v1 v2 v3 v4 V9 mean_row grade
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 -0.88 0.1171 A
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 -1.70 -0.0684 D
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 -1.70 0.0794 B
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 -0.64 -0.1206 E
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 -0.60 -0.1602 E
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 -0.20 0.0348 C
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 -2.46 0.0192 C
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 -3.04 -0.1084 D
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 -2.60 0.0471 B
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 -2.14 0.0718 B
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 -1.44 0.0806 B
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 -2.60 -0.0268 C
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 -2.42 -0.1682 E
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 -2.08 -0.0985 D
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 -2.02 -0.0470 D
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 -1.62 -0.2215 E
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 -1.04 0.1278 A
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 -0.60 0.2832 A
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 -2.90 0.1594 A
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 -2.40 0.1446 A
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 -2.86 0.0459 C
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 -1.44 0.0806 B
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 -2.20 -0.2013 E
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 -2.22 -0.0707 D
df[order(df$grade, df$nitrogen),] # 對(duì)df先按grade,再按nitrogen進(jìn)行排序臭蚁。
## year nitrogen variety block v1 v2 v3 v4 V9 mean_row grade
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 -0.88 0.1171 A
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 -1.04 0.1278 A
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 -0.60 0.2832 A
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 -2.90 0.1594 A
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 -2.40 0.1446 A
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 -1.70 0.0794 B
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 -2.60 0.0471 B
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 -2.14 0.0718 B
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 -1.44 0.0806 B
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 -1.44 0.0806 B
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 -0.20 0.0348 C
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 -2.46 0.0192 C
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 -2.60 -0.0268 C
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 -2.86 0.0459 C
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 -1.70 -0.0684 D
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 -2.08 -0.0985 D
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 -2.02 -0.0470 D
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 -3.04 -0.1084 D
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 -2.22 -0.0707 D
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 -0.64 -0.1206 E
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 -0.60 -0.1602 E
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 -2.42 -0.1682 E
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 -1.62 -0.2215 E
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 -2.20 -0.2013 E
參考資料:
- 《R語(yǔ)言實(shí)戰(zhàn)》(中文版)最铁,人民郵電出版社,2013.