《R語(yǔ)言實(shí)戰(zhàn)》自學(xué)筆記29-數(shù)據(jù)處理難題的一套解決方案

數(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

參考資料:

  1. 《R語(yǔ)言實(shí)戰(zhàn)》(中文版)最铁,人民郵電出版社,2013.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垮兑,一起剝皮案震驚了整個(gè)濱河市冷尉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌系枪,老刑警劉巖雀哨,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嗤无,居然都是意外死亡震束,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門当犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人割疾,你說我怎么就攤上這事嚎卫。” “怎么了宏榕?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵拓诸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我麻昼,道長(zhǎng)奠支,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任抚芦,我火速辦了婚禮服协,結(jié)果婚禮上狡忙,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好艾蓝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涤伐,像睡著了一般谒所。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上消返,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天载弄,我揣著相機(jī)與錄音耘拇,去河邊找鬼。 笑死宇攻,一個(gè)胖子當(dāng)著我的面吹牛驼鞭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尺碰,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挣棕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了亲桥?” 一聲冷哼從身側(cè)響起洛心,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎题篷,沒想到半個(gè)月后词身,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡番枚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年法严,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫笼。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡深啤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出路星,到底是詐尸還是另有隱情溯街,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布洋丐,位于F島的核電站呈昔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏友绝。R本人自食惡果不足惜堤尾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迁客。 院中可真熱鬧郭宝,春花似錦、人聲如沸哲泊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)切威。三九已至育特,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缰冤。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工犬缨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棉浸。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓怀薛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親迷郑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枝恋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容