R语言学习应用_客户APP注册刷单展示(续)

浏览: 1817

感谢你长得这么好看还关注我的博客,祝你天天开心,每天都是棒棒哒~

上篇 https://ask.hellobi.com/blog/okajun/8101 展示了ggplot2的做图效果,留下了疑问“怎样更自动化发现并展示异常数据”,后来想起了shiny包,之前听说后没有仔细研究,现在打开官网,查看了11个内置案例,然后开始尝试实现自己想要的功能。

先看一下shiny的效果,以内置示例1为例:

library(shiny)

#eleven built-in examples
system.file("examples", package="shiny")

runExample("01_hello") # a histogram

效果如下图:(可以滑动改变数值,直方图会自动跟着变)

hello shiny.png

研究了内置的11个示例,找到规律,现在尝试实现自己的目的:

library(RODBC)
library(shiny)
library(ggplot2)

#所有员工每日注册客户数
channel<-odbcConnect("MySQLServer")
mydata<-sqlQuery(channel,"SELECT YEAR(注册时间)*10000 + MONTH(注册时间)*100 + DAY(注册时间) AS date,归属工号 as employee_id,归属姓名 as name,COUNT(客户编号) AS regist_num
FROM FactLcbRegist
WHERE 归属工号 <> '-'
GROUP BY YEAR(注册时间)*10000 + MONTH(注册时间)*100 + DAY(注册时间),归属工号,归属姓名
ORDER BY YEAR(注册时间)*10000 + MONTH(注册时间)*100 + DAY(注册时间) DESC,COUNT(客户编号) DESC",stringsAsFactors = FALSE)

mydatacus<-sqlQuery(channel,"SELECT 归属工号 as employee_id,注册时间 as regist_time FROM [FactLcbRegist]",stringsAsFactors = FALSE)
#head(mydatacus)
mydatacus$regist_time <- as.POSIXct(mydatacus$regist_time)
mydatacus$date <- format(mydatacus$regist_time,"%Y-%m-%d")
mydatacus$time <- as.numeric(difftime(mydatacus$regist_time,mydatacus$date,units = "hours"))

ui <- fluidPage(
titlePanel("客户注册数据监测"),
sidebarLayout(
sidebarPanel(
selectInput("dataset", "请选择理财经理:",
choices = unique(subset(mydata, regist_num >= 100)$employee_id)),
numericInput("selreg", "注册数筛选条件:", 50),
numericInput("obs", "查看理财经理观测量:", 5)
),
mainPanel(
tableOutput("view"),
tableOutput("view1"),
plotOutput("Plot")
)
)
)
server <- function(input, output) {
output$view <- renderTable({
head(subset(mydata,employee_id == input$dataset), n = input$obs)
})
output$view1 <- renderTable({
subset(mydata, regist_num >= input$selreg)
})
output$Plot <- renderPlot({
ggplot(subset(mydatacus, employee_id == input$dataset),aes(x=date,y=time,fill=date))+
geom_violin()+
geom_jitter(cex=.6)+
labs(title="注册时间分布")+
theme(legend.position="none")+
scale_y_continuous(breaks=seq(0,24,4))
})
}
shinyApp(ui = ui, server = server)

shinycus.png

以上就是我尝试的结果,有两个问题还请大神指导:

1、排版问题:想最上边是ggplot2图,下面并列两个table怎么实现?是用shinydashboard包吗?

2、第一个selectinput中理财经理的选择没有做到交互,我写入的是固定值100,如何与“注册筛选条件”后的结果集中的理财经理工号进行交互?

当我把 choices = unique(subset(mydata, regist_num >= 100)$employee_id)) 

改成: choices = unique(subset(mydata, regist_num >= input$selreg)$employee_id))时:

报错:Error in get(input$selreg) : object 'input' not found

以上是我的思路及做法,谢谢你这么好看还这么有耐心看完了,给你点赞,还请各位大神不吝赐教,谢谢!


后续补充:

使用shinydashboard的效果很不错,如下:

Clipboard Image.png

推荐 2
本文由 okajun 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

okajun

okajun 数据小白

恩,最近看了一下shinydashboard包的官方说明,排版问题可以使用shinydashboard包来解决,效果不错~

要回复文章请先登录注册