用R快速搭建配置web后台

在日常的数据工作中,常会碰到需要上传配置数据的情况,比如字典表、指定特定的用户或商品等。若能快速地做出相应的配置后台,只需在浏览器上就能上传数据,既方便自己,更重要的是还能够开放给需要的业务人员自己去管理。

这里分享一个用R快速搭建配置后台的方式,借助R的shiny包,能方便的做出这个web应用。

这个简单的配置管理后台具有两个模块:
1、查询现有的配置列表
2、上传更新配置列表

OK,下面开始coding。

首先,载入用到的包。这里使用xlsx上传数据,因为对于业务人员来说excel更通用,远端数据库用的是MySQL。这里你完全可以根据自己的需要修改。

library(shiny)
library(xlsx)
library(RMySQL)

接着,进行必要的信息配置。首先,在数据库中新建表,并定义字段,这是用来存储配置数据的。

yourtable <- "tmp_peizhi_test_yueshi"  #此处修改为对应的表名

# 配置数据库连续信息
host <- "xxxx"
user <- "yueshi"
password <- "VcXDBcGEC1aI"
port <- 3305
dbname <- "test"

然后,开始进行shiny的部分,shiny的代码包括ui和server两个主模块。

ui采用navbarPage的布局,分别建立两个tabPanel,对应"现有配置列表"和"上传配置"。为了保证上传的数据符合规范,这里设计提供上传模板,让用户下载模板后,按模板上传数据即可。在成功上传后,会提示上传成功状态,并说明数据位置,同时在右侧展示新上传的配置数据。

继续阅读“用R快速搭建配置web后台”

shiny自动更新数据的例子

通常,我们用shiny做的可视化界面,数据在一开始读入后,即使数据源的数据有变动,也往往需要手动进行刷新操作。若希望数据能定时自动刷新,则可以通过在实时表达式中添加invalidateLater()来实现。

invalidateLater函数是使对象在指定时间后无效化并重新执行,如invalidateLater(20000)可实现每2秒钟自动刷新数据。

invalidateLater(millis, session = getDefaultReactiveDomain())

下面的例子是展示每秒自动更新的实时时间。可以运行试试

library(shiny)

# ui ------------------------------------------
ui <- shinyUI(fluidPage(
textOutput("currentTime")
))

# server ----------------------------------------
server <- shinyServer(function(input, output) {

t <- reactive({
invalidateLater(1000)  #1000毫秒之后重新执行
paste("当前时间是:", Sys.time())
})

output$currentTime <- renderText({
t()
})
})

# Run the application
shinyApp(ui = ui, server = server)

R语言包的操作与管理

R包是由一系列函数、帮助文档和数据文件组成的文件束,R包提供了大量的功能:绘图、统计、机器学习、数据处理等。丰富多彩的R包是R语言最具魅力的地方。就像哆啦A梦的口袋,应有尽有。

使用R包之前,你首先得把它安装到本地的库中,并在使用之前加载它。以使用决策树算法C5.0的R包C50为例:
首先安装R包:install.packages("C50") ,如需同时安装多个包这样写:install.packages(c("C50","pmml"));
使用前,需先加载R包:libraray(C50),如需加载指定路径的包可通过lib.loc参数,如library("C50", lib.loc="~/R/x86_64-pc-linux-gnu-library/3.2");
关闭R包:detach("package:C50", unload=TRUE),这并不会删除这个包,只是退出加载状态而已;
卸载R包:remove.packages("C50"),当然这里也可以通过参数lib来指定包的路径。

继续阅读“R语言包的操作与管理”

R语言实现随机森林建模的实例

问题,用户注册七天内,通过用户的浏览行为判断用户是否会付费?

输入变量:
pv(浏览量)、hotdays(活跃天数)、time(活跃时长)、aciton(关键动作数)

目标:
ispay(是否付费)

R程序过程:

# 读取数据
a <- read.delim("~/rwork/data")

# 数据详情如下
str(a)

221003shttxxq5hzh55gtx

 

# 随机森林建模
tree<-randomForest(as.factor(ispay)~.,data=a)

pr<-predict(tree, newdata=a)

table(a$ispay,pr,
dnn=c("Actual", "Predicted"))

继续阅读“R语言实现随机森林建模的实例”