我有一个数据集,该数据集包含三圈(每圈15秒),每一圈显示每秒不同的速度:
SELECT DISTINCT
CASE WHEN sender < receiver THEN sender ELSE receiver END as PartyA,
CASE WHEN sender < receiver THEN receiver ELSE sender END as PartyB
from `table`
我想将三个圈比较起来,但是对于第一个圈,我想使用sliderInput来仅选择15秒中的一些。我在将其添加到我的代码时遇到了一些困难。这是我目前所拥有的:
AA <- as.data.frame(cbind(c(10,12,11,12,12,11,12,13,11,9,9,12,11,10,12,9,8,7,9,8,7,9,9,8,9,7,9,10,10,10,7,6,7,8,8,7,6,6,7,8,7,6,7,8,8),
c(rep("Lap_1",15),rep("Lap_2",15),rep("Lap_3",15))))
我应该在某个时候使用install.packages("shiny")
install.packages("ggplot2")
library(shiny)
library(ggplot2)
colnames(AA) <- c("Speed","Lap")
AA$Speed <- as.numeric(as.character(AA$Speed))
ui=shinyUI(
fluidPage(
titlePanel("Title here"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("lap_choose", label = "Choose the laps",
choices = c("Lap_1","Lap_2","Lap_3")),
sliderInput("secs_1",
"Seconds in L1:",
min = 0,
max = 15,
value = c(3,10),
step=1)),
mainPanel(
plotOutput("Comparison"))
)
)
)
server=function(input,output){
#data manipulation
data_1=reactive({
return(AA[AA$Lap%in%input$lap_choose,])
})
output$Comparison <- renderPlot({
ggplot(data=data_1(), aes(Speed, fill = Lap)) +
stat_density(aes(y = ..density..),
position = "identity",
color = "black",
alpha = 0.8) +
xlab("Distribution") +
ylab("Density") +
ggtitle("Comparison") +
theme(plot.title = element_text(hjust = 0.5,size=24, face="bold"))
})
}
shinyApp(ui,server)
来更新secs_1
,但是还不知道如何更新。有什么想法吗?
答案 0 :(得分:0)
如果我理解正确,那么如果“ lap”变量为“ lap_1”,则想过滤掉一些值(基于sec_1 slideInput)。
尝试在data_1函数中使用ifelse语句。
data_1=reactive({
xc <- AA[AA$Lap%in%input$lap_choose,]
gh <- ifelse(xc$Lap == "Lap_1" & xc$Speed %in% c(input$secs_1[1],input$secs_1[2]),
FALSE, TRUE)
return(xc[gh,])
})