我正在尝试构建一个简单的 Shiny 应用程序,它可以从 CSV 文件中获取数据输入,然后显示数据以及 ts 图,这是我编写的 R 代码,
用户界面。R 文件
library(shiny)
shinyUI <- fluidPage(
titlePanel(h2("Blood Test Result System",align = "center")),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "dataset",
label = "Choose a blood value:",
choices = c("Albumin","Bilirubin","CL(KLOR)","Glukoz","Kalsiyum","Kolesterol",
"Kreatinin","Potasyum","Protein","Trigliserid","Hdl Kolesterol","Kreatin Kinaz"))),
mainPanel(
verbatimTextOutput("summary"),
tableOutput("view"))))
服务器。R 文件
library(shiny)
shinyServer(
function(input,output){
datasetInput <- reactive({
switch(input$dataset,
"Albumin"=albumin,
"Bilirubin"=biliribun,
"CL(KLOR)"=clklor,
"Glukoz"=glukoz,
"Kalsiyum" = kalsiyum,
"Kolesterol" = kolesterol,
"Kreatinin" = kreatinin,
"Kreatin Kinaz" = kreatinkinaz,
"Potasyum" = potasyum,
"Protein" = protein,
"Trigliserid"=trigliserid,
"Hdl Kolesterol"=hdlkolesterol,
"Kreatin Kinaz"=kreatinkinaz)
})
# Generate a summary of the dataset ----
output$summary <- renderPrint({
dataset <- datasetInput()
summary(dataset)
})})
如何实施带有验血值及其日期的ps图?我有 13 个血液值作为数据框(日期、value_name、结果、单位、间隔(赞 (2019-01-28,钾,4.00,毫摩尔/升,3.5-5.2(
看来你是Shiny的新手,所以我为你写了工作示例,以便你可以继续学习。
我还根据您的描述创建了虚拟数据集,并将它们堆叠成一个 data.frame。
要绘制时间序列和任何其他类型的图表,请查看 ggplot2。 对于某些变量的子集序列,您需要 DPLYR。两者都由RStudio团队创建。
欢迎来到闪亮的世界!
library(shiny)
library(dplyr)
library(ggplot2)
potasyum_data <- data.frame(date=seq(as.Date("2019/6/1"), by = "day", length.out = 30),
value_name = rep("Potasyum", 30),
result=sample(1:100, 30))
protein_data <- data.frame(date=seq(as.Date("2019/6/1"), by = "day", length.out = 30),
value_name = rep("Protein", 30),
result=sample(1:100, 30))
stack_data <- rbind(potasyum_data, protein_data)
ui <- fluidPage(
titlePanel(h2("Blood Test Result System",align = "center")),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "dataset",
label = "Choose a blood value:",
choices = c("Potasyum", "Protein"),
selected = "Protein")),
mainPanel(
plotOutput("ts_plot"),
verbatimTextOutput("summary"))))
server <- shinyServer(
function(input,output){
datasetInput <- reactive({
stack_data %>% filter(value_name == input$dataset)
})
# Generate a summary of the dataset ----
output$summary <- renderPrint({
dataset <- datasetInput()
summary(dataset$result)
})
# plot time series
output$ts_plot <- renderPlot({
dataset <- datasetInput()
ggplot(dataset, aes(x = date, y=result)) + geom_line()
})
})
shiny::shinyApp(ui = ui, server = server)