标签:
前几章对R语言的运行原理、基本语法、数据类型、环境部署等基础知识作了简单介绍,本节将结合具体案例进行验证测试。 案例场景:从互联网下载全国三甲医院数据,以地图作为背景,展现各医院在地图上的分布图。全国三甲医院数据来源 http://www.wxmp.cn/cms/detail-51610-23480-1.html
目录:
map包研究:
效果图:
数据清洗:
#读取数,删除空值 pdata<-read.csv("d:\\data.txt",sep="\t",header=FALSE,col.names = c("city","name")) pdata <- na.omit(pdata) #加载baidumap 根据名称获取医院经纬度 library(baidumap) bhs <- getCoordinate(pdata$name,formatted = T) #组织清洗后的数据 hsdata <- data.frame(name=rownames(bhs),lon=bhs[,1],lat=bhs[,2]) result <- merge(pdata,hsdata,by.x="name",by.y="name") head(result) #删除空值数据 result <- na.omit(result) #保存清空后的数据 path <- c("d:\\data1.txt") write.table(result,file = path,row.names = FALSE)
清理前后的数据对比图如下:
R包开发:
#FastRWeb调用R脚本函数入口 run <- function(...){ #物理文件保存地址 path = c("/var/www/html") file_name = paste0("C", format(Sys.time(), "%Y%m%d")) full_path = paste0(path, "/", file_name, ".html") if (file.exists(full_path)) { return(file_name) } my.writeMap(full_path) out(file_name) } my.writeMap <- function(file_name){ #获取清洗完成的数据 pdata<-read.csv("/var/www/html/data1.txt",sep="\t",header=FALSE,col.names = c("name","cityName","lon","lat")) head(pdata) #按城市统计医院数量(分布图用到的参数) cityCount <- tapply(pdata$name,pdata$cityName,length) citydata <- data.frame(place=row.names(cityCount),values=cityCount) #geodata stadata <- data.frame(lon=pdata$lon,lat=pdata$lat,cityname = pdata$name) #分布图 output <- remapC(citydata, title = "Demo", theme = get_theme("Bright"), markPointData =stadata[,3], markPointTheme = markPointControl(symbol = "pin",effect = TRUE,symbolSize = 3,color = "red"), geoData = stadata) my.plot(output,file_name) } #写物理文件,修改REmap 代码 my.plot <- function(object, file_name) { ## SVG rewrite JS path if (object@maptype == ‘SVG‘) { content <- sub("http://echarts.baidu.com/build/dist/echarts.js","./js/echarts.js", object@content) content <- sub("http://echarts.baidu.com/build/dist/echarts-all.js","./js/echarts-all.js",content) } if (object@maptype == ‘SVGH‘) { content <- sub("http://echarts.baidu.com/build/dist/echarts.js","./js/echarts.js", object@content) content <- sub("http://echarts.baidu.com/build/dist/echarts-all.js","./js/echarts-all.js",content) } ## Bmap rewrite JS path if (object@maptype == "Bmap") { content <- sub("http://echarts.baidu.com/build/dist/echarts.js","./js/echarts.js",object@content) content <- sub("http://echarts.baidu.com/doc/asset/js/jquery.min.js","./js/jquery.min.js",content) content <- sub("http://lchiffon.github.io/reveal_slidify/echarts/require", "./js",content) } writeLines(content,file_name,useBytes = T) }
说明: 本例代码是表示正式发布到FastRWeb框架上通过程序调用以Web方式访问的示例,如果仅是学习研究用的话,直接将 my.writeMap 函数里面的代码 copy 出来,将最后一句保存物理文件的代码改为 show(output)或 output,在你本地Window的Rstudio 命令行下执行即可看到效果, 没那么麻烦。
R脚本部署:
标签:
原文地址:http://www.cnblogs.com/tgzhu/p/5775829.html