你好漂亮的人,
我在使用当前的R项目来正确设置服务器逻辑时遇到了一些麻烦。我有一个奥运赛事历史数据集,包括运动员的地区或国家/地区,获得奖牌的年份等。
我想首先创建一个基本的视觉输出,并在滑动条中按年份对其进行过滤。我要显示的输出是按国家/地区计算的奖牌数量,使用水平堆叠的条形图,填充颜色分别对应于铜牌,银牌和金牌。
我的问题是在闪亮的服务器逻辑内链接输出,还能够按年份过滤数据。
有人可以帮我解决这两个问题吗?
可在此处找到数据集:
https://www.kaggle.com/heesoo37/olympic-history-data-a-thorough-analysis/data
我使用了一些函数来过滤数据,并创建了一个独特的函数以在闪亮应用的服务器逻辑中使用。
# unique function
function(Region, Medal_count){
#Count number of each medal type by country
Medal_count <- Olympic %>%
filter(!is.na(Medal)) %>%
group_by(region, Medal) %>%
count(Medal, sort=FALSE) %>%
spread(key=Medal, value=n) %>%
replace_na(list(Gold=0, Silver=0, Bronze=0)) %>%
mutate(Total=sum(Gold, Silver, Bronze)) %>%
arrange(desc(Total))
Medal_total <- Olympic %>%
filter(!is.na(Medal)) %>%
group_by(region,Medal) %>%
summarize(Count = length(Medal))
# arrange country by total medal count
Rank <- Medal_total %>%
group_by(region) %>%
summarize(Total=sum(Count)) %>%
arrange(Total) %>%
top_n(10)
Medal_total$region <- factor(Medal_total$region, levels=Rank$region)
Medal_top <- na.omit(Medal_total)
p <-ggplot(Medal_top, aes(x=region, y=Count, fill=Medal)) +
geom_col() +
coord_flip() +
scale_fill_manual(values=c("gold1","gray70","gold4")) +
ggtitle("Medal counts by country") +
theme(plot.title = element_text(hjust = 0.5))
return(p)
}
# my template for UI
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
titlePanel("Olympic History"),
sidebarLayout(
sidebarPanel(
radioButtons(
inputId = "radio",
label = "select this",
choices = list(
"Choice 1" = 1,
"Choice 2" = 2,
"Choice 3" = 3)
),
selectInput(
inputId = "Sport",
label = "Select your fav sport",
choices = list(
choose="",
"Rugby",
"Tennis",
selected=NULL
)
),
sliderInput(
inputId = "Year",
label = "choose a year",
min = 1988, max = 2016, value=1988, step = 2)
),
mainPanel(
plotOutput("bar")
)
))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)