r-带有barplot年份的滑块



我正试图在我的条形图页面中获得一个滑块,以使数据每年都具有交互性。

#library
library(dplyr)
library(shiny)
library(shinythemes)
library(ggplot2)
#Source
dataset <- read.csv("Wagegap.csv")
SFWage <- dataset %>% 
group_by(gender,JobTitle, Year) %>%
summarise(averageBasePay = mean(BasePay, na.rm=TRUE)) %>%
select(gender, JobTitle, averageBasePay, Year)
clean <- SFWage %>% filter(gender != "")

#UI
ui <- fluidPage(

theme = shinytheme("united"),

navbarPage("San Fransisco Wages",
tabPanel("Barplot",

mainPanel(
plotOutput("barplot")

)) ,
tabPanel("Table", 
mainPanel(
dataTableOutput("table")
))                     
)
)                       

#server
server <- function(input, output){

output$barplot <- renderPlot({

ggplot(clean, aes(x = JobTitle, y = averageBasePay  ))+
geom_bar(stat="Identity", width = 0.3, fill="orange")+
labs(x= "Jobs", y = "Wage", title = "Wage per job")

})


output$table <- renderDataTable({
clean

})
}

#Run App
shinyApp(ui = ui, server = server)

我还不完全理解如何输入这些输入。我试着把它滑入导航栏页面,但我不知道它是如何工作的。我也试着让这一年变得被动,但没有成功。

这不是必须被动应对的一年;这是整个数据帧。因此,在你的ui中,你可以做:

[...]
tabPanel("Barplot",

mainPanel(
sliderInput("year", label = "Which year should be displayed?", min = 1900, max = 2020, step = 5, value = 2000) # new
plotOutput("barplot")

)) ,
[...]

我把它放在那里是为了方便;布局是你的。我尽量少做改变。

然后服务器将具有:

server <- function(input, output){

# NEW ########################################
clean <- reactive({
SFWage <- dataset %>% 
group_by(gender,JobTitle, Year) %>%
summarise(averageBasePay = mean(as.numeric(BasePay), na.rm=TRUE)) %>% # Notice the as.numeric()
select(gender, JobTitle, averageBasePay, Year)

SFWage %>% filter(gender != "" & Year == input$year)
})

# OLD ########################################
output$barplot <- renderPlot({

ggplot(clean(), aes(x = JobTitle, y = averageBasePay  ))+ # Parenthesis
geom_bar(stat="Identity", width = 0.3, fill="orange")+
labs(x= "Jobs", y = "Wage", title = "Wage per job")

})


output$table <- renderDataTable({
clean() # Parenthesis

})
}

别忘了加括号,就像我在这里做的那样。

这应该有效,但我可能打错了什么或完全错了。由于我没有你的数据,我无法测试它

编辑:由于您的评论,我添加了as.numeric()术语,如您所见。然而,如果你的数据不仅不是数字,而且是,,你可以这样做:

[...]
summarise(averageBasePay = mean(as.numeric(gsub(",", ".", BasePay)), na.rm=TRUE)) %>% # Notice the as.numeric() and the gsub()
[...]

相关内容

  • 没有找到相关文章

最新更新