Dans mon application Shiny, j'ai inclus un dateRangeInput
qui prend une date de début et de fin comme entrées. J'ai aussi un autre élément selectInput
ui, qui prend une entrée (exclu de ce poste)L'utilisation de dateRangeInput pour filtrer les données ne produit pas le résultat souhaité
Un extrait de ui.R
column(wellPanel(
tags$style('.input-sm {font-size: 20px; } label {font-weight: 500; margin-bottom: 30px; }'),
dateRangeInput("inp_pg1daterange",
label = paste('Date Range Selection'),
start = min(results_combined$Date),
end = max(results_combined$Date),
separator = " to ",
weekstart = 1
)
),width=3)
Et sur la server.R côté, je me attends les entrées de date:
1) filtrer une trame de données 2) convertir et stocker l'ensemble de données filtré en un ensemble de variables différentes 3) basé sur un selectInput
, Afficher une valueBox
avec la valeur correcte
C'est ce que le code du serveur ressemble
server <- function(input, output,session) {
Étape 1) Filtre dataframe en utilisant daterange entrée
kpidf_pg1_totalqol= reactive({
results_combined %>%
filter(SVM_LABEL_QOL=='QoL' & Date >=input$inp_pg1daterange[[1]] & Date <=input$inp_pg1daterange[[2]]) %>%
select(`Global Segment`=globalsegment,Classified=SVM_LABEL_QOL) %>%
group_by(`Global Segment`) %>%
summarise(n=n()) %>%
select(`Global Segment`,Count=n) %>%
ungroup()
}) #close reactive function
Étape 2) Convertir et stocker l'ensemble de données filtré dans un ensemble de variables différentes (toujours dans la même fonction réactive)
totalqol_enr <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "ENR", select = Count))
totalqol_def <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "DEF", select = Count))
totalqol_snr <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "SNR", select = Count))
totalqol_jus <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "JUS", select = Count))
totalqol_gov <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "GOV", select = Count))
totalqol_hc <- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "HC", select = Count))
totalqol_spl<- unlist(subset(kpidf_pg1_totalqol(), `Global Segment` == "SPL", select = Count))
Etape 3) Sur la base d'une selectInput
, l'application affiche une valueBox
avec la valeur correcte de l'étape précédente
output$KPItotalqol <-renderValueBox({
if(input$inp_pg1segment=="ENR")
{
valueBox(
value = totalqol_enr()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
if(input$inp_pg1segment=="DEF")
{
valueBox(
value = totalqol_def()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
if(input$inp_pg1segment=="SNR")
{
valueBox(
value = totalqol_snr()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
if(input$inp_pg1segment=="JUS")
{
valueBox(
value = totalqol_jus()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
if(input$inp_pg1segment=="GOV")
{
valueBox(
value = totalqol_gov()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
if(input$inp_pg1segment=="HC")
{
valueBox(
value = totalqol_hc()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
else
{
valueBox(
value = totalqol_spl()
,"Total number of QoL tweets identified"
,icon = icon("twitter-square")
,color = "green")
}
})
Cependant ceci est la production d'une erreur qui indique la fonction Could not find function totalqol_def
Toutes les idées sur comment cela peut fonctionner seront appréciées!
Pourquoi vous appelez '' 'kpidf_pg1_totalqol''' en lui-même? – amrrs
Je vous recommande de jeter un oeil à https://www.programiz.com/r-programming/if-else-statement pour les instructions appropriées «if else-if else». –
@amrrs Je l'ai édité. Mais cela me donne toujours une erreur (Vous avez essayé de faire quelque chose qui ne peut être fait qu'à l'intérieur d'une expression réactive ou d'un observateur) – Varun