文章中圖片均來自猴子大數(shù)據(jù)直播。
在數(shù)據(jù)處理中,我們并不是把所有的代碼都放在一個.R文件中,而是按照一個個模塊進(jìn)行存放,在需要進(jìn)行修改和編譯的時候,可以更為快捷和高效找到目標(biāo)模塊。尤其在處理復(fù)雜數(shù)據(jù)和業(yè)務(wù)工作時,業(yè)務(wù)模塊才真正發(fā)揮作用。(用機(jī)器語言的思維進(jìn)行理解)

第一步,樹立模塊化認(rèn)識
一般模塊化包括:視圖模塊(view),業(yè)務(wù)邏輯模塊(service),數(shù)據(jù)層模塊(db),公關(guān)模塊(util),公共數(shù)據(jù)(data),日志模塊(log),數(shù)據(jù)結(jié)果輸出模塊(output)。

也就是說,一個成熟的數(shù)據(jù)分析流程一般包含以上文件。

數(shù)據(jù)層模塊db: 操作數(shù)據(jù)庫相關(guān)數(shù)據(jù),可查詢數(shù)據(jù),聯(lián)接數(shù)據(jù)框;
業(yè)務(wù)邏輯模塊service:存放一些通用的業(yè)務(wù)分析指標(biāo),主要分析代碼;
視圖模塊view:用于存放可視化結(jié)果。
公共數(shù)據(jù)模塊data:項目中常用到的數(shù)據(jù)。
日志模塊log:數(shù)據(jù)處理中,加入一些日志的記錄,了解數(shù)據(jù)處理的流程。
數(shù)據(jù)輸出模塊output:主要是輸出各類結(jié)果,比如保存為PDF或者數(shù)據(jù)報告。
公關(guān)模塊util:項目相關(guān)的配置信息。比如在直播中,util中存放的是R腳本——分析中用到的第三方的包,都放到這個里面。避免一些重復(fù)的工作。

比如下面的公關(guān)模塊util中包括的內(nèi)容,避免重復(fù)安裝。
#管理安裝包
# 數(shù)據(jù)包
packages <- c("nycflights13")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
#字符串包
packages <- c("stringr")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
#圖形包
packages <- c("ggplot2")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
#數(shù)據(jù)處理包
packages <- c("dplyr")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}

業(yè)務(wù)邏輯模塊service:可存放數(shù)據(jù)分析中相關(guān)指標(biāo)代碼,或者相關(guān)示例。

視圖模塊view:放置繪圖相關(guān)代碼。
</br>
第二步,各個模塊下的R腳本如何互相調(diào)用
- a,公關(guān)模塊util
- b,業(yè)務(wù)邏輯模塊service
- c,視圖模塊

#1.首先定義好R路徑
#當(dāng)前項目運行根路徑
#"E:/猴子大數(shù)據(jù)分析課程/系列課程《從零學(xué)會大數(shù)據(jù)核心:數(shù)據(jù)分析》/第4講:復(fù)雜數(shù)據(jù)處理和分析/源代碼和數(shù)據(jù)/da"
projectPath <- getwd()
#業(yè)務(wù)邏輯模塊路徑
#"E:/猴子大數(shù)據(jù)分析課程/系列課程《從零學(xué)會大數(shù)據(jù)核心:數(shù)據(jù)分析》/第4講:復(fù)雜數(shù)據(jù)處理和分析/源代碼和數(shù)據(jù)/da/service/flight.R"
servicePath <- str_c(projectPath,
"service",
"flight.R",
sep="/")
#2導(dǎo)入業(yè)務(wù)邏輯中的R文件
#編譯R文件
source(servicePath)
#3使用業(yè)務(wù)邏輯中的方法
#業(yè)務(wù)邏輯:航班航行距離與延誤時間的關(guān)系
delay<-disDelay()
#4圖形可視化
#散點圖
view <- ggplot(data = delay) +
geom_point(mapping = aes(x = dist, y = delay))+
geom_smooth(mapping = aes(x = dist, y = delay))
#保存分析結(jié)果
outputpath <- str_c(projectPath,"output","delayFlight.jpg",sep="/")
ggsave(filename=outputpath, plot=view)

應(yīng)該是這幅圖:

可事實上是:

出現(xiàn)了錯誤信息。截止目前還沒有搞明白。繼續(xù)努力。