???????????????????????????????????????????????????????????????????? 李慧子
R語言是一門功能強(qiáng)大狂秘、廣受歡迎的數(shù)據(jù)挖掘類軟件咱娶。由于工作需要和個人興趣,本人利用閑暇時間滩援,采用邊學(xué)習(xí)邊實(shí)踐的方法栅隐,完成了R語言的快速入門。現(xiàn)將學(xué)習(xí)過程中歸納的知識點(diǎn)分享給大家玩徊,一方面可以讓對R還比較陌生的朋友能夠迅速了解R語言的整體框架與數(shù)據(jù)處理流程租悄,另一方面也是為讓自己更好地吸收理解。我主要學(xué)習(xí)參考的是《R語言數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》恩袱、《R語言實(shí)戰(zhàn)》這兩本工具書泣棋,前者的特色是有豐富的案例研究,而后者更偏向知識點(diǎn)的講解和梳理畔塔√侗玻總之各有千秋鸯屿,可以結(jié)合起來學(xué)習(xí)。相關(guān)知識點(diǎn)的思維導(dǎo)圖如下:
1把敢、R語言學(xué)習(xí)的知識框架
2寄摆、R語言框架涵蓋的知識點(diǎn)
(1)R語言基本知識
R最激動人心的一部分功能是通過可選模塊的下載和安裝來實(shí)現(xiàn)的。目前有5500多個包(package)的用戶貢獻(xiàn)模塊可從http://cran.r-project.org/web/packages下載修赞。這些包提供了橫跨各種領(lǐng)域的新功能婶恼,包括分析地理數(shù)據(jù)、處理蛋白質(zhì)譜等柏副。
庫(library):計算機(jī)上存儲包的目錄成為庫勾邦,函數(shù)library()可以顯示庫中有哪些包。
包的安裝:install.packages(“”)
包的載入:library()
包的使用:help(package=“package_name”)可以輸出某個包的簡短描述以及包中的函數(shù)名稱和數(shù)據(jù)集名稱的列表割择。
(2)創(chuàng)建眷篇、導(dǎo)入數(shù)據(jù)集
1.數(shù)據(jù)類型
①向量:用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組荔泳。單個向量中的數(shù)據(jù)必須擁有相同的數(shù)據(jù)類型铅歼。
創(chuàng)建向量函數(shù):c()
例子:a<-c(1,2,5,3)
②矩陣:一個二維數(shù)組,每個元素?fù)碛邢嗤臄?shù)據(jù)類型换可。
創(chuàng)建矩陣函數(shù):matrix(vector,nrow,ncol,byrow=logical_value,dimnames=list(,))
例子:y<-matrix(1:20,nrow=5,ncol=4)#創(chuàng)建一個5*4的矩陣#
③數(shù)組:與矩陣類似椎椰,但是維度可以大于2。
創(chuàng)建數(shù)組函數(shù):array()
④數(shù)據(jù)框:不同的列可以包含不同模式(數(shù)值型沾鳄、字符型等)的數(shù)據(jù)慨飘,是R中最常處理的數(shù)據(jù)結(jié)構(gòu)。
創(chuàng)建數(shù)據(jù)框函數(shù):data.frame(col1,col2,col3,…)
⑤因子:變量可歸結(jié)為名義型译荞、有序型或連續(xù)型變量瓤的。名義變量和有序變量在R中稱為因子。
創(chuàng)建因子函數(shù):factor()
例子:diabetes<-c(“Type1”, “Type2”, “Type1”, “Type1”)
Diabetes<-factor(diabetes)#將此向量存儲為(1,2,1,1)吞歼,并在內(nèi)部將其關(guān)聯(lián)為1= Type1,2= Type2#
數(shù)值型變量可以用levels和labels參數(shù)來編碼成因子圈膏。
⑥列表:對象的有序集合。
列表創(chuàng)建函數(shù):list()
2.導(dǎo)入數(shù)據(jù)集
? 讀取Excel文件的最好方式篙骡,就是在Eexel中將其導(dǎo)出為一個逗號分隔文件(csv)
? 讀取數(shù)據(jù)函數(shù):read.csv('./data/book3.csv',he=T)
網(wǎng)頁上的文字可以使用函數(shù)readlines()來下載到一個R的字符向量中稽坤,然后使用grep()和gsub()一類的函數(shù)處理。對于結(jié)構(gòu)復(fù)雜的網(wǎng)頁糯俗,可以使用RCurl包和XML包來提取信息尿褪。
3.數(shù)據(jù)集的標(biāo)注
包括為變量名添加描述性標(biāo)簽,以及為類別性變量中的編碼添加值標(biāo)簽得湘。
例如:names(patientdata)[2]<-“Age at hospitalization(in years)”#將age重命名為“Age at hospitalization(in years”#
Patientdata$gender<-factor(patientdata$gender,levels=c(1,2),labels=c(“male”, “female”))#創(chuàng)建值標(biāo)簽杖玲,1表示男性,2表示女性#
(3)數(shù)據(jù)探索
要點(diǎn)歸納
1.數(shù)據(jù)質(zhì)量分析
例子:對餐飲銷售額數(shù)據(jù)進(jìn)行缺失值和異常值分析
編寫代碼對數(shù)據(jù)缺失值個數(shù)淘正、缺失率以及缺失值所在的位置進(jìn)行分析摆马。
可以看到缺失值個數(shù)輸出結(jié)果為1臼闻,占樣本總量的0.497%,缺失值位于第15行囤采,2015年2月14日銷量數(shù)據(jù)缺失些阅。
編寫代碼繪制箱形圖,對數(shù)據(jù)異常值進(jìn)行分析斑唬。
箭頭所示的是一個標(biāo)準(zhǔn)差的區(qū)間,可以看出箱形圖中超過上下界的8個銷售額數(shù)據(jù)可能為異常值黎泣,需要引起注意并結(jié)合具體業(yè)務(wù)分析恕刘。
2.數(shù)據(jù)特征分析
貢獻(xiàn)度分析
貢獻(xiàn)度分析又稱帕累托分析。就餐飲企業(yè)來說抒倚,應(yīng)用貢獻(xiàn)度分析可以重點(diǎn)改善某菜系盈利最高的前80%的菜品褐着,或者重點(diǎn)發(fā)展綜合影響最高的80%的部門。這種結(jié)果可以通過帕累托圖直觀地呈現(xiàn)出來托呕。
例子:對餐飲系統(tǒng)對應(yīng)的菜品盈利數(shù)據(jù)進(jìn)行帕累托分析含蓉。代碼及反饋結(jié)果如下
??? 可以發(fā)現(xiàn),菜品A1-A7共7個菜品项郊,占菜品總類數(shù)的70%馅扣,總盈利約占該月盈利額的85%。根據(jù)帕累托原則着降,應(yīng)該增加對菜品A1-A7的成本投入差油,減少對菜品A8-A10的投入以獲得更高的盈利額。
(4)數(shù)據(jù)預(yù)處理
在海量原始數(shù)據(jù)中存在不量不完整任洞、有異常蓄喇、不一致的數(shù)據(jù),在使用前需要進(jìn)行數(shù)據(jù)清洗交掏。數(shù)據(jù)清洗完成后接著進(jìn)行數(shù)據(jù)集成妆偏、變換、規(guī)約等一系列的處理盅弛,該過程就是數(shù)據(jù)預(yù)處理钱骂。在數(shù)據(jù)挖掘的過程中,數(shù)據(jù)預(yù)處理工作量占到了整個過程的60%挪鹏。
數(shù)據(jù)預(yù)處理的主要內(nèi)容包括數(shù)據(jù)清理罐柳、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約狰住。這里主要對數(shù)據(jù)清理進(jìn)行重點(diǎn)標(biāo)示张吉。
缺失值處理:
1. 刪除法
刪除行:na.omit()
刪除變量:data[,-p]
2. 替換法
數(shù)值型變量用均值替換,非數(shù)值型變量催植,則使用其他全部有效觀測值的中位數(shù)或者眾數(shù)進(jìn)行替換肮蛹。
3. 插補(bǔ)法
回歸插補(bǔ):利用回歸模型勺择,將需要插值補(bǔ)缺的變量作為因變量,其他相關(guān)變量作為自變量伦忠,通過回歸函數(shù)lm()預(yù)測出因變量的值來對缺失變量進(jìn)行補(bǔ)缺省核。
多重插補(bǔ):原理是從一個包含缺失值的數(shù)據(jù)集中生成一組完整的數(shù)據(jù),如此進(jìn)行多次昆码,從而產(chǎn)生缺失值的一個隨機(jī)樣本气忠,R中的mice函數(shù)可以用來進(jìn)行多重插補(bǔ)。
例子:對某餐廳一段時間的銷量表中的缺失值赋咽,用均值替換旧噪、回歸插補(bǔ)、多重插補(bǔ)進(jìn)行
缺失值插補(bǔ)脓匿,將異常值按缺失值處理淘钟。
首先對缺失值、異常值進(jìn)行識別陪毡。R語言代碼如下:
用is.na()函數(shù)對缺失值進(jìn)行識別米母,從結(jié)果可發(fā)現(xiàn)第15行銷售數(shù)據(jù)存在缺失。然后繼續(xù)用單變量散點(diǎn)圖和箱形圖識別數(shù)據(jù)中的異常值毡琉。R語言代碼如下:
R反饋回的結(jié)果如下圖:
將異常值處理成缺失值铁瞒。代碼如下:
對缺失值進(jìn)行處理。代碼如下:
① 行刪除法處理缺失值
處理完數(shù)據(jù)如下:
② 均值替換法處理缺失值
處理完數(shù)據(jù)如下:
③ 回歸插補(bǔ)法處理缺失值
處理完數(shù)據(jù)如下:
(5)簡單的數(shù)據(jù)建模
?????? 第一篇筆記先寫到這哈桅滋,感覺R語言涉及的知識面還是挺廣的精拟,學(xué)習(xí)之路還很長。最后虱歪,想自己動手操作一番蜂绎,需要餐飲案例數(shù)據(jù)的朋友可以私信我。相互促進(jìn)笋鄙,交流心得师枣。