在 Shiny 中对数据进行反应性排序后计算列的平均值(均值)
Calculate average (mean) of the column after reactively sort the data in Shiny
我正在尝试根据反应变量计算列的平均值。
我在原始数据上有 2 列 sheet“DN(分类)”和“强度(数值)”。我想计算通过“DN”过滤后的“强度”的平均值。打击是我的剧本。
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)
题目没有全部信息。有些值未知,有些操作不清楚。例如,没有关于 Y
或 input$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)
我正在尝试根据反应变量计算列的平均值。
我在原始数据上有 2 列 sheet“DN(分类)”和“强度(数值)”。我想计算通过“DN”过滤后的“强度”的平均值。打击是我的剧本。
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)
题目没有全部信息。有些值未知,有些操作不清楚。例如,没有关于 Y
或 input$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)