R語言中如編寫業(yè)務(wù)模塊

文章中圖片均來自猴子大數(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)模塊

比如下面的公關(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ù)邏輯模塊

業(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)該是這幅圖:
output
可事實上是:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容