Я хотел бы выбрать параметры из раскрывающегося списка, которые хранятся в виде различных атрибутов в моем фрейме данных, и использовать ползунок для изменения лет, чтобы я мог видеть его влияние на valueCard. Я застрял в том, чтобы выяснить, как можно вызвать атрибут pf_rol из фрейма данных df1, чтобы отразить его значение на valueCard.
Я уже успешно создал 2 карты значений, которыми можно манипулировать только с помощью ползунка, но теперь я хочу использовать ползунок и selectInput для изменения значений в ValueCard 'pfrol'.
PS: Буду очень признателен, если кто-нибудь поможет с картограммой. У меня есть все названия стран, и я хотел бы манипулировать различными атрибутами вместе с ползунками, чтобы наблюдать за изменяющимися тенденциями так же, как карты стоимости.
global.r
df <- read.csv("hfi_cc_2018.csv", header = T)
summary(df)
sapply(df, function(x) sum(is.na(x)))
#Replace Null Values
df[is.na(df)] <- 0
df[,5:ncol(df)] <- round(df[,5:ncol(df)], 2)
#adding selective columns new df1
#https://stackoverflow.com/questions/10085806/extracting-specific-columns-from-a-data-frame
df1<- df[, (names(df) %in% c("year","countries","region","pf_rol", "pf_ss_homicide","pf_ss_disappearances_violent",
))]
ui.r
require(shiny)
require(shinydashboard)
shinyUI(
dashboardPage(
dashboardHeader(title = "Human Freedom Index", titleWidth = 300),
dashboardSidebar(
sliderInput("years","Select Year:",
min = min(df1$year),
max = max(df1$year),
value = min(df1$year),
step = 1),
selectInput("variable","Select Freedom Factor:",
choices = list("Rule of Law"= "pf_rol",
"Homicides Reported" = "pf_ss_homicide")
)
),
dashboardBody(
fluidRow(
valueBoxOutput("pfrol"),
valueBoxOutput("pfrank"),
valueBoxOutput("efrank")
),
fluidRow(
box(plotlyOutput("plot1"), width=15, height=400)
)
)
)
)
server.r
require(shiny)
require(dplyr)
require(shinydashboard)
shinyServer(function(input,output){
observe({
(card <- df1 %>%
filter(year == input$years))
output$pfrank = renderValueBox(
valueBox(round(mean(card$pf_score),1),
"Personal Freedom Score")
)
})
observe({
if(input$variable == "Rule of Law"){
if(filter(df1$year == input$years)){
output$pfrol = renderValueBox(
valueBox(round(mean(df1$pf_rol),1),
"Rule of Law")
)
}
}
})
})