文章中图片均来自猴子大数据直播。
在数据处理中,我们并不是把所有的代码都放在一个.R文件中,而是按照一个个模块进行存放,在需要进行修改和编译的时候,可以更为快捷和高效找到目标模块。尤其在处理复杂数据和业务工作时,业务模块才真正发挥作用。(用机器语言的思维进行理解)
第一步,树立模块化认识
一般模块化包括:视图模块(view),业务逻辑模块(service),数据层模块(db),公关模块(util),公共数据(data),日志模块(log),数据结果输出模块(output)。
也就是说,一个成熟的数据分析流程一般包含以上文件。
数据层模块db: 操作数据库相关数据,可查询数据,联接数据框;
业务逻辑模块service:存放一些通用的业务分析指标,主要分析代码;
视图模块view:用于存放可视化结果。
公共数据模块data:项目中常用到的数据。
日志模块log:数据处理中,加入一些日志的记录,了解数据处理的流程。
数据输出模块output:主要是输出各类结果,比如保存为PDF或者数据报告。
公关模块util:项目相关的配置信息。比如在直播中,util中存放的是R脚本——分析中用到的第三方的包,都放到这个里面。避免一些重复的工作。
比如下面的公关模块util中包括的内容,避免重复安装。
#管理安装包
# 数据包
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())))
}
#数据处理包
packages <- c("dplyr")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
业务逻辑模块service:可存放数据分析中相关指标代码,或者相关示例。
视图模块view:放置绘图相关代码。
</br>
第二步,各个模块下的R脚本如何互相调用
- a,公关模块util
- b,业务逻辑模块service
- c,视图模块
#1.首先定义好R路径
#当前项目运行根路径
#"E:/猴子大数据分析课程/系列课程《从零学会大数据核心:数据分析》/第4讲:复杂数据处理和分析/源代码和数据/da"
projectPath <- getwd()
#业务逻辑模块路径
#"E:/猴子大数据分析课程/系列课程《从零学会大数据核心:数据分析》/第4讲:复杂数据处理和分析/源代码和数据/da/service/flight.R"
servicePath <- str_c(projectPath,
"service",
"flight.R",
sep="/")
#2导入业务逻辑中的R文件
#编译R文件
source(servicePath)
#3使用业务逻辑中的方法
#业务逻辑:航班航行距离与延误时间的关系
delay<-disDelay()
#4图形可视化
#散点图
view <- ggplot(data = delay) +
geom_point(mapping = aes(x = dist, y = delay))+
geom_smooth(mapping = aes(x = dist, y = delay))
#保存分析结果
outputpath <- str_c(projectPath,"output","delayFlight.jpg",sep="/")
ggsave(filename=outputpath, plot=view)
应该是这幅图:
可事实上是:
出现了错误信息。截止目前还没有搞明白。继续努力。