【问题标题】:Calculate average (mean) of the column after reactively sort the data in Shiny在对 Shiny 中的数据进行反应排序后计算列的平均值(平均值)
【发布时间】:2021-05-05 18:10:19
【问题描述】:

我正在尝试根据反应变量计算列的平均值。

我在原始数据表“DN(分类)”和“强度(数值)”上有 2 列。我想计算“DN”过滤后“强度”的平均值。 Blow 是我的剧本。

DN  Intensity
EX2 72.35579
EX2 66.59401
EX2 64.26114
EX2 81.52641
EX2 68.62764
EX2 74.28244
EX3 123.60344
EX3 123.0854
EX3 119.91794
EX3 122.62172
EX3 111.73214
EX3 126.37246

df1 <-data.frame("DN"=DN, "Intensity"=Intensity)

ui <- fluidPage(
  
  titlePanel("Volume Calculator"),
  
  sidebarLayout(
    sidebarPanel(
      selectizeInput("Y", "Y",choices=Y, selected = TRUE, multiple = TRUE),
      dateInput("X", "X:",format = "mm/dd/yy")),
    mainPanel(column(5,
                     sliderInput("Time",
                                 "Time:",
                                 min = 1,
                                 max = 60,
                                 value = 30),
                     selectInput("DN", "DN", choices = D1N),
                     
                     column(5,
                            fluidRow(
                              h3("Total"),
                              verbatimTextOutput("Ex1"))
                     ))
              
    )))

server <- function(input, output) {
  d<- reactive({
    res <- d1 %>%%>%
      filter(DN == input$DN) %>%
      res})
  
  output$Ex1 <- renderPrint({
    dataset <-d()
    Int <-tapply(dataset[[input$Intensity]],dataset[[input$DN]], mean, na.rm=TRUE)
    D1m <- abs(input$Time)
    results1 <- round(Int*Time, digits=0)
    results1  
  })
  
}

shinyApp(ui = ui, server = server)

【问题讨论】:

  • 请发MRE
  • 抱歉代码混乱。我希望这一变化能说明问题。
  • 请发布d1 的一些示例数据,以及TimeIntensity 的定义。否则,没人知道你是如何获得input$Timeinput$Intensity

标签: r shiny mean


【解决方案1】:

这些问题并不包含所有信息。有些值是未知的,有些操作是不清楚的。例如,不共享有关Yinput$Intensity 的信息。另外我认为您在这里不需要tapply,因为您只过滤了一个DN 值。

假设您拥有的数据称为df1,您可以尝试-

library(shiny)

ui <- fluidPage(
  
  titlePanel("Volume Calculator"),
  
  sidebarLayout(
    sidebarPanel(
      selectizeInput("Y", "Y",choices=letters, selected = TRUE, multiple = TRUE),
      dateInput("X", "X:",format = "mm/dd/yy")),
    mainPanel(column(5,
                     sliderInput("Time",
                                 "Time:",
                                 min = 1,
                                 max = 60,
                                 value = 30),
                     selectInput("DN", "DN", choices = unique(df1$DN)),
                     
                     column(5,
                            fluidRow(
                              h3("Total"),
                              verbatimTextOutput("Ex1"))
                     ))
              
    )))

server <- function(input, output) {
  d<- reactive({
    df1 %>%filter(DN == input$DN) 
  })
  
  output$Ex1 <- renderPrint({
    dataset <-d()
    Int <-mean(dataset$Intensity[dataset$DN == input$DN], na.rm=TRUE)
    Int  
  })
  
}

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2013-01-14
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多