library(shiny) library(DT) library(dplyr) library(readr) library(Cairo) library(ggplot2) library(plotly) library(stringi) library(stringr) library(datetime) library(dplyr) library(ggthemes) library(RMySQL) library(shinyCyJS) csv_map <- list( "按月统计" = "按月统计0.csv", "最后六周按日统计" = "按日统计0.csv", "按小细胞统计" = "按细胞统计0.csv", "按省统计" = "按区域统计0.csv", "按仪器统计" = "按仪器统计0.csv", "按样本类型统计" = "按样本统计0.csv", "按试剂批次统计" = "按批次统计0.csv", "按试剂项目统计" = "按项目统计0.csv" ) page<-1 max_pages<-1 ui <- fluidPage( tags$head(tags$title("丹娜数据分析平台")), tags$img(src = "dnklogo.png", height = "75px", alt = "Logo",style = "float: right;"), titlePanel( HTML("
丹娜数据分析平台
和迈仪器
") ), # titlePanel("丹娜数据分析平台-和迈仪器"), sidebarLayout( sidebarPanel( width = 3, # 设置侧边栏宽度为 2(更小) selectInput("stat_dim", "选择统计维度", choices = names(csv_map)), uiOutput("metric_group"), uiOutput("stat_way"), br(), br(), downloadButton("download_table", "下载表格数据") ), mainPanel( width = 9, tabsetPanel( tabPanel("图表展示", uiOutput("pagination_ui"), plotlyOutput("main_plot")), tabPanel("数据表格", DTOutput("data_table")), tabPanel("仪器与小细胞(coming soon)", ShinyCyJSOutput(outputId = "cy")) ) ) ) ) # 定义服务器逻辑 server <- function(input, output) { current_page <- reactiveVal(page) # current_page <- reactiveVal() output$download_table <- downloadHandler( filename = function() { paste0(input$stat_dim, "_", Sys.Date(), ".csv") }, content = function(file) { data <- data_raw() write_excel_csv(data, file) } ) nodes <- data.frame( id = c("A", "B", "C", "D"), width = c(10, 20, 30, 40), height = c(10, 20, 30, 40) ) edges <- data.frame( source = c("A", "B", "C", "D"), target = c("B", "C", "D", "B") ) nodes <- buildElems(nodes, type = "Node") edges <- buildElems(edges, type = "Edge") obj <- shinyCyJS(c(nodes, edges)) output$cy <- renderShinyCyJS(obj) output$pagination_ui <- renderUI({ req(input$stat_dim, input$metric, input$stat_way_sel) max_pages <- switch(input$stat_dim, "最后六周按日统计" = { if (input$stat_way_sel == "按日分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按日分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按日分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按月统计" = { if (input$stat_way_sel == "按月分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按月分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按月分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按仪器统计" = max(仪器号List$GroupID), "按试剂批次统计" = max(批次号List$GroupID), "按试剂项目统计" = max(项目号List$GroupID), "按小细胞统计" = 2, 1) page<-current_page() if(!is.numeric(page)) { page<-1 } else { if(page>max_pages) page<-max_pages } if (max_pages > 1) { tagList( actionButton("prev_page", "上一页"), span(paste("第", page, "页 / 共", max_pages, "页")), actionButton("next_page", "下一页") ) } }) observeEvent(input$prev_page, { max_pages <- switch(input$stat_dim, "最后六周按日统计" = { if (input$stat_way_sel == "按日分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按日分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按日分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按月统计" = { if (input$stat_way_sel == "按月分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按月分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按月分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按仪器统计" = max(仪器号List$GroupID), "按试剂批次统计" = max(批次号List$GroupID), "按试剂项目统计" = max(项目号List$GroupID), "按小细胞统计" = 2, 1) page<-min(current_page(),max_pages) if (page > 1) current_page(page - 1) else 1 }) observeEvent(input$next_page, { max_pages <- switch(input$stat_dim, "最后六周按日统计" = { if (input$stat_way_sel == "按日分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按日分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按日分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按月统计" = { if (input$stat_way_sel == "按月分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (input$stat_way_sel == "按月分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (input$stat_way_sel == "按月分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按仪器统计" = max(仪器号List$GroupID), "按试剂批次统计" = max(批次号List$GroupID), "按试剂项目统计" = max(项目号List$GroupID), "按小细胞统计" = 2, 1) page<-min(current_page(),max_pages) if (page10, ] colnames(df20) df20$浓度1<-as.numeric(df20$浓度1) df20$C值<-as.numeric(df20$C值) df20$T值<-as.numeric(df20$T值) df20$ToverC值<-df20$T值/df20$C值 df20$ToverC值[df20$是否有效==0]<-NA summary(as.numeric(df20$结论)) summary(df20$浓度1) summary(df20$ToverC值) summary(df20$testTimeFromeBegining) colnames(df20) df20$testMonth<-str_sub(df20$测试时间,1,7) #df20$testMonthinNumber<-as.numeric(str_c(str_sub(df20$测试时间,1,4),str_sub(df20$测试时间,6,7))) df20$testDay<-as.Date(str_sub(df20$测试时间,1,10)) df20<-df20[df20$testDay<="2025-06-05", ] #df20<-df20[df20$testDay<=Sys.Date(), ] df20<-df20[complete.cases(df20$testDay), ] summary(df20$testDay) df20$testTime<-as.datetime(str_sub(df20$测试时间,1,19),format='%Y-%m-%d %H:%M:%S') duration<-(max(df20$testTime,na.rm = TRUE)-min(df20$testTime,na.rm = TRUE))/(60.*60.*24.) df20$testTimeFromeToday<-(max(df20$testTime,na.rm = TRUE)-df20$testTime)/(60.*60.*24.)+1. #max0<-max(df20$testTime,na.rm=TRUE) #min0<-min(df20$testTime,na.rm=TRUE) #unique(dfBy样本$样本类型) #max0-min0 #max(df20$testDay,na.rm=TRUE) #min(df20$testDay,na.rm=TRUE) #clean_df <- df20[complete.cases(df20[,c("小细胞")]), ] #summary(clean_df) summary(df20$testTimeFromeToday) dayMax<-max(df20$testTimeFromeToday,na.rm = TRUE) df2000<-df20 df20<-df20[df20$testTimeFromeToday<=730,] #df20<-df20[complete.cases(df20$测试时间), ] lastDay<-max(df20$testDay,na.rm = TRUE) df20dayLast21<-df20[lastDay-df20$testDay<21,] dfByDay <- df2000 %>% group_by(testMonth,testDay) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByDay$阳性率<-round(dfByDay$阳性数/dfByDay$有效数,3) dfByDay$有效率<-round(dfByDay$有效数/dfByDay$测试数,3) dfByDay$阳性数<-as.integer(dfByDay$阳性数) dfByDay$测试数<-as.integer(dfByDay$测试数) dfByDay$有效数<-as.integer(dfByDay$有效数) dfByDay$省数<-as.integer(dfByDay$省数) dfByDay <- dfByDay[order(lastDay-dfByDay$testDay),] #dfByDay <- dfByDay[lastDay-dfByDay$testDay<42,] #dfByDay<-dfByDay[lastDay-dfByDay$testDay<=21,] write_excel_csv(dfByDay,file="按日统计0.csv") dfByMonth <- df2000 %>% group_by(testMonth) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByMonth$阳性率<-round(dfByMonth$阳性数/dfByMonth$有效数,3) dfByMonth$有效率<-round(dfByMonth$有效数/dfByMonth$测试数,3) dfByMonth$阳性数<-as.integer(dfByMonth$阳性数) dfByMonth$测试数<-as.integer(dfByMonth$测试数) dfByMonth$有效数<-as.integer(dfByMonth$有效数) dfByMonth$省数<-as.integer(dfByMonth$省数) dfByMonth <- dfByMonth[order(dfByMonth$testMonth),] dfByMonth <- dfByMonth[nrow(dfByMonth):1,] write_excel_csv(dfByMonth,file="按月统计0.csv") dfBy项目 <- df2000 %>% group_by(项目名称) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy项目$阳性率<-round(dfBy项目$阳性数/dfBy项目$有效数,3) dfBy项目$有效率<-round(dfBy项目$有效数/dfBy项目$测试数,3) dfBy项目$阳性数<-as.integer(dfBy项目$阳性数) dfBy项目$测试数<-as.integer(dfBy项目$测试数) dfBy项目$有效数<-as.integer(dfBy项目$有效数) dfBy项目 <- dfBy项目[order(-dfBy项目$测试数),] write_excel_csv(dfBy项目,file="按项目统计0.csv") dfBy样本 <- df2000 %>% group_by(样本类型) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy样本$阳性率<-round(dfBy样本$阳性数/dfBy样本$有效数,3) dfBy样本$有效率<-round(dfBy样本$有效数/dfBy样本$测试数,3) dfBy样本$阳性数<-as.integer(dfBy样本$阳性数) dfBy样本$测试数<-as.integer(dfBy样本$测试数) dfBy样本$有效数<-as.integer(dfBy样本$有效数) dfBy样本 <- dfBy样本[order(-dfBy样本$测试数),] write_excel_csv(dfBy样本,file="按样本统计0.csv") dfBy细胞 <- df2000 %>% group_by(小细胞) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy细胞$阳性率<-round(dfBy细胞$阳性数/dfBy细胞$有效数,3) dfBy细胞$有效率<-round(dfBy细胞$有效数/dfBy细胞$测试数,3) dfBy细胞$阳性数<-as.integer(dfBy细胞$阳性数) dfBy细胞$测试数<-as.integer(dfBy细胞$测试数) dfBy细胞$有效数<-as.integer(dfBy细胞$有效数) dfBy细胞 <- dfBy细胞[order(-dfBy细胞$测试数),] write_excel_csv(dfBy细胞,file="按细胞统计0.csv") dfBy区域 <- df2000 %>% group_by(省编号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy区域$阳性率<-round(dfBy区域$阳性数/dfBy区域$有效数,3) dfBy区域$有效率<-round(dfBy区域$有效数/dfBy区域$测试数,3) dfBy区域$阳性数<-as.integer(dfBy区域$阳性数) dfBy区域$测试数<-as.integer(dfBy区域$测试数) dfBy区域$有效数<-as.integer(dfBy区域$有效数) dfBy区域 <- dfBy区域[order(-dfBy区域$测试数),] write_excel_csv(dfBy区域,file="按区域统计0.csv") 省编号<-dfBy区域$省编号 省编号0<-省编号[str_length(省编号)>8] dfBy区域<-dfBy区域[dfBy区域$省编号 %in% 省编号0,] dfBy批次 <- df2000 %>% group_by(批次名称) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), 最早测试=min(testDay,na.rm = TRUE), 最近测试=max(testDay,na.rm = TRUE), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy批次$阳性率<-round(dfBy批次$阳性数/dfBy批次$有效数,3) dfBy批次$有效率<-round(dfBy批次$有效数/dfBy批次$测试数,3) dfBy批次$阳性数<-as.integer(dfBy批次$阳性数) dfBy批次$测试数<-as.integer(dfBy批次$测试数) dfBy批次$有效数<-as.integer(dfBy批次$有效数) dfBy批次$省数<-as.integer(dfBy批次$省数) dfBy批次 <- dfBy批次[order(-dfBy批次$测试数),] write_excel_csv(dfBy批次,file="按批次统计0.csv") df20001<-cbind(df2000,IDIndex=1:nrow(df2000)) dfBy仪器 <- df20001 %>% group_by(仪器序列号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)), earliestIndex=min(IDIndex), medianIndex=median(IDIndex), latestIndex=max(IDIndex), 最早测试=min(testDay,na.rm = TRUE), 最近测试=max(testDay,na.rm = TRUE), 测试开始 = round(max(testTimeFromeToday,na.rm = TRUE),2), 测试截止 = round(min(testTimeFromeToday,na.rm = TRUE),2) ) dfBy仪器$阳性率<-round(dfBy仪器$阳性数/dfBy仪器$有效数,3) dfBy仪器$有效率<-round(dfBy仪器$有效数/dfBy仪器$测试数,3) dfBy仪器$阳性数<-as.integer(dfBy仪器$阳性数) dfBy仪器$测试数<-as.integer(dfBy仪器$测试数) dfBy仪器$有效数<-as.integer(dfBy仪器$有效数) dfBy仪器$最早测试地点<-df2000$详细地址[dfBy仪器$earliestIndex] dfBy仪器$中期测试地点<-df2000$详细地址[dfBy仪器$medianIndex] dfBy仪器$最后测试地点<-df2000$详细地址[dfBy仪器$latestIndex] dfBy仪器 <- dfBy仪器[order(-dfBy仪器$测试数),] cname0<-c( "仪器序列号" ,"最早测试地点","中期测试地点", "最后测试地点", "批次数" , "测试数" , "样本数" , "项目数" , "阳性数", "有效数" , "最早测试" , "最近测试" , "测试开始" , "测试截止", "阳性率" , "有效率") write_excel_csv(dfBy仪器[,cname0],file="按仪器统计0.csv") cname0<-c( "仪器序列号" ,"仪器编号" ,"最早测试地点","中期测试地点", "最后测试地点", "开机地点" , "批次数" , "测试数" , "样本数" , "项目数" , "阳性数", "有效数" , "最早测试" , "最近测试" , "测试开始" , "测试截止", "阳性率" , "有效率", "SIM卡号" , "发货时间" , "仪器类型" , "总测试量" , "最后一次开机时间" ,"时间差" , "网络类型" , "ip地址" , "用户" , "用户CRM" , "返利表序号" , "申请日期" , "小细胞" , "客户编码" , "代理商名称" , "用户名称" , "规格" , "状态") colnames(dfBy仪器) dfBy仪器andInf<-merge(dfBy仪器,仪器编号和序列号,by="仪器序列号",all.x=TRUE,all.y=FALSE) colnames(dfBy仪器andInf) dfBy仪器andInf <- dfBy仪器andInf[order(-dfBy仪器andInf$测试截止),][,cname0] #dfBy仪器andInf0<-distinct(dfBy仪器andInf) write_excel_csv(dfBy仪器andInf,file="仪器统计andInf.csv") dfBy仪器andInfall<-merge(dfBy仪器,仪器编号和序列号,by="仪器序列号",all.x=TRUE,all.y=TRUE) dfBy仪器andInfall <- dfBy仪器andInfall[order(-dfBy仪器andInfall$测试截止),][,cname0] #dfBy仪器andInfall0<-distinct(dfBy仪器andInfall) write_excel_csv(dfBy仪器andInfall,file="仪器统计andInfall.csv") colnames(仪器编号和序列号) notFound<-仪器编号和序列号[!(仪器编号和序列号$仪器序列号 %in% dfBy仪器$仪器序列号),] colnames(notFound) cname1<-c( "仪器序列号" ,"仪器编号" , "开机地点" , "SIM卡号" , "发货时间" , "仪器类型" , "总测试量" , "最后一次开机时间" ,"时间差" , "网络类型" , "ip地址" , "用户" , "用户CRM" , "返利表序号" , "申请日期" , "小细胞" , "客户编码" , "代理商名称" , "用户名称" , "规格" , "状态") #notFound[,cname1] #notFound0<-distinct(notFound) write_excel_csv(notFound[,cname1],file="仪器统计Notfound.csv") if(FALSE) { CRMNotFound <- read.csv("CRMNotFound.csv",encoding = "UTF-8",fill = TRUE) NoTestSince05012025 <- read.csv("NoTestSince05012025.csv",encoding = "UTF-8",fill = TRUE) colnames(CRMNotFound)[c(3,4,5)]<-c("销售申请时间NoCRM","销售申请区域NoCRM","销售申请时代理商名称NoCRM") colnames(NoTestSince05012025) [9]<-"备注NoTest" feedbackData<-merge(CRMNotFound,NoTestSince05012025,by="仪器编号",all.x=TRUE,all.y=TRUE) colnames(feedbackData) colnames(feedbackData)[10]<-"用户onCRM" write_excel_csv(feedbackData,file="feedbackData07042025.csv") 仪器编号和序列号feedbackData<-merge(仪器编号和序列号,feedbackData,by="仪器编号",all.x=TRUE,all.y=TRUE) colnames(仪器编号和序列号feedbackData) dfBy仪器feedbackDataandInf<-merge(dfBy仪器,仪器编号和序列号feedbackData,by="仪器序列号",all.x=TRUE,all.y=FALSE) colnames(dfBy仪器feedbackDataandInf) cname0<-c( "仪器序列号" ,"仪器编号" ,"最早测试地点","中期测试地点", "最后测试地点", "开机地点" , "批次数" , "测试数" , "样本数" , "项目数" , "阳性数", "有效数" , "最早测试" , "最近测试" , "测试开始" , "测试截止", "阳性率" , "有效率", "SIM卡号" , "发货时间" , "仪器类型" , "总测试量" , "最后一次开机时间" ,"时间差" , "网络类型" , "ip地址" , "用户" , "用户CRM" , "返利表序号" , "申请日期" , "小细胞" , "客户编码" , "代理商名称" , "用户名称" , "规格" , "状态","销售申请时间" , "销售申请时间NoCRM" , "销售申请区域NoCRM" , "销售申请时代理商名称NoCRM", "是否装机" , "未装机原因" , "备注" , "最后测试时间" , "用户onCRM" , "销售申请日期" , "销售申请区域" , "销售申请时代理商名称" , "销售申请时用户名称" , "无测试原因" , "备注NoTest" ) dfBy仪器feedbackDataandInf <- dfBy仪器feedbackDataandInf[order(-dfBy仪器feedbackDataandInf$测试截止),][,cname0] write_excel_csv(dfBy仪器feedbackDataandInf,file="仪器统计feedbackandInf.csv") dfBy仪器feedbackDataandInfall<-merge(dfBy仪器,仪器编号和序列号feedbackData,by="仪器序列号",all.x=TRUE,all.y=TRUE) dfBy仪器feedbackDataandInfall <- dfBy仪器feedbackDataandInfall[order(-dfBy仪器feedbackDataandInfall$测试截止),][,cname0] write_excel_csv(dfBy仪器feedbackDataandInfall,file="仪器统计feedbackandInfall.csv") colnames(仪器编号和序列号feedbackData) notFoundfeedBack<-仪器编号和序列号feedbackData[!(仪器编号和序列号feedbackData$仪器序列号 %in% dfBy仪器$仪器序列号),] cname1<-c( "仪器序列号" ,"仪器编号" , "开机地点" , "SIM卡号" , "发货时间" , "仪器类型" , "总测试量" , "最后一次开机时间" ,"时间差" , "网络类型" , "ip地址" , "用户" , "用户CRM" , "返利表序号" , "申请日期" , "小细胞" , "客户编码" , "代理商名称" , "用户名称" , "规格" , "状态","销售申请时间" , "销售申请时间NoCRM" , "销售申请区域NoCRM" , "销售申请时代理商名称NoCRM", "是否装机" , "未装机原因" , "备注" , "最后测试时间" , "用户onCRM" , "销售申请日期" , "销售申请区域" , "销售申请时代理商名称" , "销售申请时用户名称" , "无测试原因" , "备注NoTest" ) colnames(notFoundfeedBack) write_excel_csv(notFoundfeedBack[,cname1],file="仪器统计NotfoundfeedBack.csv") } dfByDayAndLocation <- df2000 %>% group_by(testDay,testMonth,省编号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByDayAndLocation$阳性率<-round(dfByDayAndLocation$阳性数/dfByDayAndLocation$有效数,3) dfByDayAndLocation$有效率<-round(dfByDayAndLocation$有效数/dfByDayAndLocation$测试数,3) dfByDayAndLocation$阳性数<-as.integer(dfByDayAndLocation$阳性数) dfByDayAndLocation$测试数<-as.integer(dfByDayAndLocation$测试数) dfByDayAndLocation$有效数<-as.integer(dfByDayAndLocation$有效数) dfByDayAndLocation <- dfByDayAndLocation[order(dfByDayAndLocation$testDay),] dfByDayAndLocation<-dfByDayAndLocation[dfByDayAndLocation$省编号 %in% 省编号0,] dfByMonthAndLocation <- df20 %>% group_by(testMonth,省编号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByMonthAndLocation$阳性率<-round(dfByMonthAndLocation$阳性数/dfByMonthAndLocation$有效数,3) dfByMonthAndLocation$有效率<-round(dfByMonthAndLocation$有效数/dfByMonthAndLocation$测试数,3) dfByMonthAndLocation$阳性数<-as.integer(dfByMonthAndLocation$阳性数) dfByMonthAndLocation$测试数<-as.integer(dfByMonthAndLocation$测试数) dfByMonthAndLocation$有效数<-as.integer(dfByMonthAndLocation$有效数) dfByMonthAndLocation <- dfByMonthAndLocation[order(dfByMonthAndLocation$testMonth),] dfByMonthAndLocation<-dfByMonthAndLocation[dfByMonthAndLocation$省编号 %in% 省编号0,] dfByDayAnd细胞 <- df2000 %>% group_by(testDay,testMonth,小细胞) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByDayAnd细胞$阳性率<-round(dfByDayAnd细胞$阳性数/dfByDayAnd细胞$有效数,3) dfByDayAnd细胞$有效率<-round(dfByDayAnd细胞$有效数/dfByDayAnd细胞$测试数,3) dfByDayAnd细胞$阳性数<-as.integer(dfByDayAnd细胞$阳性数) dfByDayAnd细胞$测试数<-as.integer(dfByDayAnd细胞$测试数) dfByDayAnd细胞$有效数<-as.integer(dfByDayAnd细胞$有效数) dfByDayAnd细胞 <- dfByDayAnd细胞[order(dfByDayAnd细胞$testDay),] dfByMonthAnd细胞 <- df20 %>% group_by(testMonth,小细胞) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByMonthAnd细胞$阳性率<-round(dfByMonthAnd细胞$阳性数/dfByMonthAnd细胞$有效数,3) dfByMonthAnd细胞$有效率<-round(dfByMonthAnd细胞$有效数/dfByMonthAnd细胞$测试数,3) dfByMonthAnd细胞$阳性数<-as.integer(dfByMonthAnd细胞$阳性数) dfByMonthAnd细胞$测试数<-as.integer(dfByMonthAnd细胞$测试数) dfByMonthAnd细胞$有效数<-as.integer(dfByMonthAnd细胞$有效数) dfByMonthAnd细胞 <- dfByMonthAnd细胞[order(dfByMonthAnd细胞$testMonth),] dfByDayAnd仪器 <- df2000 %>% group_by(testDay,testMonth,仪器序列号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByDayAnd仪器$阳性率<-round(dfByDayAnd仪器$阳性数/dfByDayAnd仪器$有效数,3) dfByDayAnd仪器$有效率<-round(dfByDayAnd仪器$有效数/dfByDayAnd仪器$测试数,3) dfByDayAnd仪器$阳性数<-as.integer(dfByDayAnd仪器$阳性数) dfByDayAnd仪器$测试数<-as.integer(dfByDayAnd仪器$测试数) dfByDayAnd仪器$有效数<-as.integer(dfByDayAnd仪器$有效数) dfByDayAnd仪器 <- dfByDayAnd仪器[order(dfByDayAnd仪器$testDay),] dfByMonthAnd仪器 <- df20 %>% group_by(testMonth,仪器序列号) %>% summarise( 测试数 = n(), 阳性数=sum(结论,na.rm = TRUE), 有效数=sum(是否有效,na.rm = TRUE), 样本数=length(unique(样本类型)), 项目数=length(unique(项目名称)), 仪器数=length(unique(仪器序列号)), 批次数=length(unique(批次名称)), 小细胞数=length(unique(小细胞)), 市数=length(unique(省市编号)), 省数=length(unique(省编号)) ) dfByMonthAnd仪器$阳性率<-round(dfByMonthAnd仪器$阳性数/dfByMonthAnd仪器$有效数,3) dfByMonthAnd仪器$有效率<-round(dfByMonthAnd仪器$有效数/dfByMonthAnd仪器$测试数,3) dfByMonthAnd仪器$阳性数<-as.integer(dfByMonthAnd仪器$阳性数) dfByMonthAnd仪器$测试数<-as.integer(dfByMonthAnd仪器$测试数) dfByMonthAnd仪器$有效数<-as.integer(dfByMonthAnd仪器$有效数) dfByMonthAnd仪器 <- dfByMonthAnd仪器[order(dfByMonthAnd仪器$testMonth),] 仪器号List0<-cbind(dfBy仪器,GroupID=rep00[1:length(dfBy仪器$仪器序列号)]) 仪器号List<-仪器号List0[,c(1,ncol(仪器号List0))] 仪器号ikmax<-max(仪器号List$GroupID) dfBy仪器$仪器序列号<-factor(dfBy仪器$仪器序列号,levels = 仪器号List[,1]) 批次号List0<-cbind(dfBy批次,GroupID=rep00[1:length(dfBy批次$批次名称)]) 批次号List<-批次号List0[,c(1,ncol(批次号List0))] 批次号ikmax<-max(批次号List$GroupID) dfBy批次$批次名称<-factor(dfBy批次$批次名称,levels = 批次号List[,1]) 项目号List0<-cbind(dfBy项目,GroupID=rep00[1:length(dfBy项目$项目名称)]) 项目号List<-项目号List0[,c(1,ncol(项目号List0))] 项目号ikmax<-max(项目号List$GroupID) dfBy项目$项目名称<-factor(dfBy项目$项目名称,levels = 项目号List[,1]) # 图表生成函数 dfByDay1<-dfByDay[lastDay-dfByDay$testDay<42,] dfByDayAndLocation1<-dfByDayAndLocation[lastDay-dfByDayAndLocation$testDay<42,] dfByMonth1<-dfByMonth[1:30,] dfByDayAnd细胞1<-dfByDayAnd细胞[lastDay-dfByDayAnd细胞$testDay<42,] lenhalf<-length(dfBy细胞$小细胞)/2 dfBy细胞1<-dfBy细胞[dfBy细胞$小细胞 %in% dfBy细胞$小细胞[1:lenhalf],] dfBy细胞2<-dfBy细胞[dfBy细胞$小细胞 %in% dfBy细胞$小细胞[(1+lenhalf):length(dfBy细胞$小细胞)],] generate_data_table <- function(dim, metric) { data <- switch(dim, "按月统计" = read_csv("按月统计0.csv"), "最后六周按日统计" = read_csv("按日统计0.csv"), "按小细胞统计"=read_csv("按细胞统计0.csv"), "按省统计" = read_csv("按区域统计0.csv"), "按仪器统计" = read_csv("按仪器统计0.csv"), "按样本类型统计" = read_csv("按样本统计0.csv"), "按试剂批次统计" = read_csv("按批次统计0.csv"), "按试剂项目统计" = read_csv("按项目统计0.csv")) metrics <- switch(metric, "测试数、阳性数、有效数" = c("测试数", "阳性数", "有效数"), "阳性率、有效率" = c("阳性率", "有效率"), "项目数、仪器数、批次数" = c("批次数", "项目数", "仪器数"), "省数、市数、小细胞数、样本数" = c("省数", "市数", "小细胞数","样本数"), "测试截止、测试开始" = c("测试截止", "测试开始")) data %>% select(all_of(metrics)) } generate_plot <- function(data, dim, metric, way, page = 1) { max_pages <- switch(dim, "最后六周按日统计" = { if (way == "按日分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (way == "按日分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (way == "按日分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按月统计" = { if (way == "按月分省统计") { ceiling(length(dfBy区域$省编号) / 6) } else if (way == "按月分小细胞统计") { ceiling(length(细胞0$细胞) / 6) } else if (way == "按月分仪器统计") { ceiling(length(仪器号List$仪器序列号) / 6) } else 1 }, "按仪器统计" = max(仪器号List$GroupID), "按试剂批次统计" = max(批次号List$GroupID), "按试剂项目统计" = max(项目号List$GroupID), "按小细胞统计" = 2, 1) # cat(page) per <- 6 # 每页子图数量 if(!is.numeric(page)) { page<-1 offset<-0 } else { if(page>max_pages) page<-max_pages offset<- (page - 1) * per # 起始下标 } # offset<-6 # ---- 函数内部的小工具:切片 ---- slice_vec <- function(vec, offset, per) { vec[ (offset + 1) : min(offset + per, length(vec)) ] } # cat("1,", page) # ---- 开始分发 ---- p <- switch(dim, # ---------- 1. 最后六周按日统计 ---------- "最后六周按日统计" = { switch(way, "按日分省统计" = { choosenList <- slice_vec(dfBy区域$省编号, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByDayAndLocation(dfByDayAndLocation1, choosenList, "testDay", "省编号", c("测试数","有效数","阳性数"), c("最后六周按日分省统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByDayAndLocation(dfByDayAndLocation1, choosenList, "testDay", "省编号", c("有效率","阳性率"), c("最后六周按日分省统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByDayAndLocation(dfByDayAndLocation1, choosenList, "testDay", "省编号", c("项目数","仪器数","批次数"), c("最后六周按日分省统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByDayAndLocation(dfByDayAndLocation1, choosenList, "testDay", "省编号", c("样本数","市数","小细胞数"), c("最后六周按日分省统计","测试时间","统计数值","")) } ) }, "按日分小细胞统计" = { choosenList <- slice_vec(细胞0$细胞, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByDayAnd细胞(dfByDayAnd细胞1, choosenList, "testDay", "小细胞", c("测试数","有效数","阳性数"), c("最后六周按日分小细胞统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByDayAnd细胞(dfByDayAnd细胞1, choosenList, "testDay", "小细胞", c("有效率","阳性率"), c("最后六周按日分小细胞统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByDayAnd细胞(dfData=dfByDayAnd细胞1,choosenList,independentVariableName="testDay",panelName="小细胞", dependentVariableNames=c("项目数","仪器数","批次数"),titleNames=c("最后六周按日分小细胞统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByDayAnd细胞(dfData=dfByDayAnd细胞1,choosenList,independentVariableName="testDay",panelName="小细胞", dependentVariableNames=c("样本数","市数","省数"),titleNames=c("最后六周按日分小细胞统计","测试时间","统计数值","")) } ) }, "按日分仪器统计" = { choosenList <- slice_vec(仪器号List$仪器序列号, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByDayAnd仪器(dfData=dfByDayAnd仪器,choosenList,independentVariableName="testDay",panelName="仪器序列号", dependentVariableNames=c("测试数","有效数","阳性数"),titleNames=c("最后六周按日分仪器统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByDayAnd仪器(dfData=dfByDayAnd仪器,choosenList,independentVariableName="testDay",panelName="仪器序列号", dependentVariableNames=c("有效率","阳性率"),titleNames=c("最后六周按日分仪器统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByDayAnd仪器(dfData=dfByDayAnd仪器,choosenList,independentVariableName="testDay",panelName="仪器序列号", dependentVariableNames=c("项目数","批次数"),titleNames=c("最后六周按日分仪器统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByDayAnd仪器(dfData=dfByDayAnd仪器,choosenList,independentVariableName="testDay",panelName="仪器序列号", dependentVariableNames=c("样本数","市数","省数","小细胞数"),titleNames=c("最后六周按日分仪器统计","测试时间","统计数值","")) } ) }, "全部统计" = { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfByDay1, "testDay", c("测试数","有效数","阳性数"), c("最后六周按日统计","测试时间","统计数值","")), "阳性率、有效率" = plotfunction(dfByDay1, "testDay", c("有效率","阳性率"), c("最后六周按日统计","测试时间","统计数值","")), "项目数、仪器数、批次数" = plotfunction(dfByDay1, "testDay", c("项目数","仪器数","批次数"), c("最后六周按日统计","测试时间","统计数值","")), "省数、市数、小细胞数、样本数" = plotfunction(dfByDay1, "testDay", c("样本数","市数","省数","小细胞数"), c("最后六周按日统计","测试时间","统计数值","")) ) } ) }, # ---------- 2. 按月统计 ---------- "按月统计" = { switch(way, "按月分省统计" = { choosenList <- slice_vec(dfBy区域$省编号, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByMonthAndLocation(dfByMonthAndLocation, choosenList, "testMonth", "省编号", c("测试数","有效数","阳性数"), c("按月分省统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByMonthAndLocation(dfByMonthAndLocation, choosenList, "testMonth", "省编号", c("有效率","阳性率"), c("按月分省统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByMonthAndLocation(dfByMonthAndLocation, choosenList, "testMonth", "省编号", c("项目数","仪器数","批次数"), c("按月分省统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByMonthAndLocation(dfByMonthAndLocation, choosenList, "testMonth", "省编号", c("样本数","市数","小细胞数"), c("按月分省统计","测试时间","统计数值","")) } ) }, "按月分小细胞统计" = { choosenList <- slice_vec(细胞0$细胞, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByMonthAnd细胞(dfByMonthAnd细胞, choosenList, "testMonth", "小细胞", c("测试数","有效数","阳性数"), c("按月分小细胞统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByMonthAnd细胞(dfByMonthAnd细胞, choosenList, "testMonth", "小细胞", c("有效率","阳性率"), c("按月分小细胞统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByMonthAnd细胞(dfData=dfByMonthAnd细胞,choosenList,independentVariableName="testMonth",panelName="小细胞", dependentVariableNames=c("项目数","仪器数","批次数"),titleNames=c("按月分小细胞统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByMonthAnd细胞(dfData=dfByMonthAnd细胞,choosenList,independentVariableName="testMonth",panelName="小细胞", dependentVariableNames=c("样本数","市数","省数","小细胞数"),titleNames=c("按月分小细胞统计","测试时间","统计数值","")) } ) }, "按月分仪器统计" = { choosenList <- slice_vec(仪器号List$仪器序列号, offset, per) if(length(choosenList) == 0) return(NULL) switch(metric, "测试数、阳性数、有效数" = { panelPlotByMonthAnd仪器(dfData=dfByMonthAnd仪器,choosenList,independentVariableName="testMonth",panelName="仪器序列号", dependentVariableNames=c("测试数","有效数","阳性数"),titleNames=c("按月分仪器统计","测试时间","统计数值","")) }, "阳性率、有效率" = { panelPlotByMonthAnd仪器(dfData=dfByMonthAnd仪器,choosenList,independentVariableName="testMonth",panelName="仪器序列号", dependentVariableNames=c("有效率","阳性率"),titleNames=c("按月分仪器统计","测试时间","统计数值","")) }, "项目数、仪器数、批次数" = { panelPlotByMonthAnd仪器(dfData=dfByMonthAnd仪器,choosenList,independentVariableName="testMonth",panelName="仪器序列号", dependentVariableNames=c("项目数","批次数"),titleNames=c("按月分仪器统计","测试时间","统计数值","")) }, "省数、市数、小细胞数、样本数" = { panelPlotByMonthAnd仪器(dfData=dfByMonthAnd仪器,choosenList,independentVariableName="testMonth",panelName="仪器序列号", dependentVariableNames=c("样本数","市数","省数"),titleNames=c("按月分仪器统计","测试时间","统计数值","")) } ) }, "全部统计" = { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfByMonth1, "testMonth", c("测试数","有效数","阳性数"), c("按月统计","测试时间","统计数值","")), "阳性率、有效率" = plotfunction(dfByMonth1, "testMonth", c("有效率","阳性率"), c("按月统计","测试时间","统计数值","")), "项目数、仪器数、批次数" = plotfunction(dfByMonth1, "testMonth", c("项目数","仪器数","批次数"), c("按月统计","测试时间","统计数值","")), "省数、市数、小细胞数、样本数" = plotfunction(dfByMonth1, "testMonth", c("样本数","市数","省数","小细胞数"), c("按月统计","测试时间","统计数值","")) ) } ) }, "按小细胞统计" = { if (page == 1) { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfBy细胞1,"小细胞",c("测试数","有效数","阳性数"),c("按小细胞统计","小细胞","统计数值","")), "阳性率、有效率" = plotfunction(dfBy细胞1, "小细胞", c("有效率","阳性率"), c("按小细胞统计","小细胞","统计数值","")), "项目数、仪器数、批次数" = plotfunction(dfBy细胞1, "小细胞", c("项目数","仪器数","批次数"), c("按小细胞统计","小细胞","统计数值","")), "省数、市数、小细胞数、样本数" = plotfunction(dfBy细胞1, "小细胞", c("样本数","市数","省数"), c("按小细胞统计","小细胞","统计数值","")), "测试截止、测试开始" = plotfunctionLog(dfBy细胞1, "小细胞", c("测试开始","测试截止"), c("按小细胞统计","小细胞","多少天之前","")) ) } else if (page == 2) { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfBy细胞2,"小细胞",c("测试数","有效数","阳性数"),c("按小细胞统计","小细胞","统计数值","")), "阳性率、有效率" = plotfunction(dfBy细胞2, "小细胞", c("有效率","阳性率"), c("按小细胞统计","小细胞","统计数值","")), "批次数、项目数、仪器数" = plotfunction(dfBy细胞2, "小细胞", c("项目数","仪器数","批次数"), c("按小细胞统计","小细胞","统计数值","")), "省数、市数、小细胞数、样本数" = plotfunction(dfBy细胞2, "小细胞", c("样本数","市数","省数"), c("按小细胞统计","小细胞","统计数值","")), "测试截止、测试开始" = plotfunctionLog(dfBy细胞2, "小细胞", c("测试开始","测试截止"), c("按小细胞统计","小细胞","多少天之前","")) ) } }, # ---------- 3. 其它维度(不需要分页) ---------- "按省统计" = { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfBy区域, "省编号", c("测试数","有效数","阳性数"), c("按省统计","省编号","统计数值","")), "阳性率、有效率" = plotfunction(dfBy区域, "省编号", c("有效率","阳性率"), c("按省统计","省编号","统计数值","")), "批次数、项目数、仪器数" = plotfunction(dfBy区域, "省编号", c("项目数","仪器数","批次数"), c("按省统计","省编号","统计数值","")), "省数、市数、小细胞数、样本数" = plotfunction(dfBy区域, "省编号", c("样本数","市数","小细胞数"), c("按省统计","省编号","统计数值","")), "测试截止、测试开始" = plotfunctionLog(dfBy区域, "省编号", c("测试开始","测试截止"), c("按省统计","省编号","多少天之前","")) ) }, "按仪器统计" = { if(!is.numeric(page)) return(NULL) if(page<1 | page>max(仪器号List$GroupID) | is.na(page)) return(NULL) switch(metric, "测试数、阳性数、有效数" = plotfunctionVector仪器序列号(page, 仪器号List, dfBy仪器, "仪器序列号", c("测试数","有效数","阳性数"), c("按仪器统计","仪器序列号","统计数值","")), "阳性率、有效率" = plotfunctionVector仪器序列号(page, 仪器号List, dfBy仪器, "仪器序列号", c("有效率","阳性率"), c("按仪器统计","仪器序列号","统计数值","")), "批次数、项目数、样本数" = plotfunctionVector仪器序列号(page, 仪器号List, dfBy仪器, "仪器序列号", c("项目数","批次数"), c("按仪器统计","仪器序列号","统计数值","")), "省数、项目数、小细胞数、样本数" = plotfunctionVector仪器序列号(page, 仪器号List, dfBy仪器, "仪器序列号", c("样本数","省数", "市数","小细胞数"), c("按仪器统计","仪器序列号","统计数值","")), "测试截止、测试开始" = plotfunctionVector仪器序列号Log(page, 仪器号List, dfBy仪器, "仪器序列号", c("测试开始","测试截止"), c("按仪器统计","仪器序列号","多少天之前","")) ) }, "按样本类型统计" = { switch(metric, "测试数、阳性数、有效数" = plotfunction(dfBy样本, "样本类型", c("测试数","有效数","阳性数"), c("按样本类型统计","样本类型","统计数值","")), "阳性率、有效率" = plotfunction(dfBy样本, "样本类型", c("有效率","阳性率"), c("按样本类型统计","样本类型","统计数值","")), "批次数、省数、项目数、小细胞数" = plotfunction(dfBy样本, "样本类型", c("项目数","仪器数","批次数"), c("按样本类型统计","样本类型","统计数值","")), "批次数、省数、项目数、小细胞数" = plotfunction(dfBy样本, "样本类型", c("省数", "市数","小细胞数"), c("按样本类型统计","样本类型","统计数值","")), "测试截止、测试开始" = plotfunctionLog(dfBy样本, "样本类型", c("测试开始","测试截止"), c("按样本类型统计","样本类型","多少天之前","")) ) }, "按试剂批次统计" = { if(!is.numeric(page)) return(NULL) if(page<1 | page>max(批次号List$GroupID) | is.na(page)) return(NULL) switch(metric, "测试数、阳性数、有效数" = plotfunctionVector批次名称(page, 批次号List, dfBy批次, "批次名称", c("测试数","有效数","阳性数"), c("按批次统计","批次名称","统计数值","")), "阳性率、有效率" = plotfunctionVector批次名称(page, 批次号List, dfBy批次, "批次名称", c("有效率","阳性率"), c("按试剂批次统计","批次名称","统计数值","")), "省数、项目数、小细胞数、样本数" = plotfunctionVector批次名称(page, 批次号List, dfBy批次, "批次名称", c("项目数","仪器数"), c("按试剂批次统计","批次名称","统计数值","")), "省数、项目数、小细胞数、样本数" = plotfunctionVector批次名称(page, 批次号List, dfBy批次, "批次名称", c("样本数","省数", "市数","小细胞数"), c("按试剂批次统计","批次名称","统计数值","")), "测试截止、测试开始" = plotfunctionVector批次名称Log(page, 批次号List, dfBy批次, "批次名称", c("测试开始","测试截止"), c("按试剂批次统计","批次名称","多少天之前","")) ) }, "按试剂项目统计" = { if(!is.numeric(page)) return(NULL) if(page<1 | page>max(项目号List$GroupID) | is.na(page)) return(NULL) switch(metric, "测试数、阳性数、有效数" = plotfunctionVector项目名称(page, 项目号List, dfBy项目, "项目名称", c("测试数","有效数","阳性数"), c("按项目统计","项目名称","统计数值","")), "阳性率、有效率" = plotfunctionVector项目名称(page, 项目号List, dfBy项目, "项目名称", c("有效率","阳性率"), c("按试剂项目统计","项目名称","统计数值","")), "批次数、省数、小细胞数、样本数" = plotfunctionVector项目名称(page, 项目号List, dfBy项目, "项目名称", c("仪器数","批次数"), c("按试剂项目统计","项目名称","统计数值","")), "省数、项目数、小细胞数、样本数" = plotfunctionVector项目名称(page, 项目号List, dfBy项目, "项目名称", c("样本数","省数", "市数","小细胞数"), c("按试剂项目统计","项目名称","统计数值","")), "测试截止、测试开始" = plotfunctionVector项目名称Log(page, 项目号List, dfBy项目, "项目名称", c("测试开始","测试截止"), c("按试剂项目统计","项目名称","多少天之前","")) ) } ) return(p) } shinyApp(ui = ui, server = server)