【问题标题】:Flexdashboard in R with ShinyR 中的 Flexdashboard 与 Shiny
【发布时间】:2020-04-03 13:19:58
【问题描述】:

我正在尝试在 flexdashboard 和 shiny 的帮助下在 R 中创建一个交互式仪表板。

我有这张表,其中有七列(翻译成英文):区域、年份、年龄、age2、ageMean、jobPosition 和工资。

我尝试使用 selectInput() 为地区、年份和职位创建 3 个下拉过滤器。

Bratislava I    2009    31.93   31.92   30.66   Priemyselná výroba  1510.24
Bratislava I    2009    31.93   31.92   30.66   Dodávka elektriny, plynu, pary a studeného vzduchu  1506.14
Bratislava I    2009    31.93   31.92   30.66   Dodávka vody, čistenie a odvod odpadových vôd, odpady a služby odstraňovania odpadov    911.0

这就是我现在所做的(我正在粘贴整个 RMarkdown,但我在下面显示的表格位于名为“数据集”的脚本中。

---
title: "Title: Bratislava"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    social: menu
    source_code: embed
runtime: shiny
---

{r global, include=FALSE}
# load data in 'global' chunk so it can be shared by all users of the dashboard
library(ggplot2)
library(flexdashboard)
library(tidyverse)
library(tidyquant)
library(readxl)
library(shiny)

birthdata <- read_excel(path = "C:/Users/Dase03/Downloads/mydata.xlsx")
salarydata <- read_excel(path = "C:/Users/Dase03/Downloads/salary.xlsx")

salarydata <- salarydata %>%
    gather(jobs, wage, -1:-2) 


salarydata <- salarydata %>%
  filter(Rok > 2008 & wage > 0 & wage != "D")

birthdata <- birthdata %>%
  filter(Rok > 2008)


dataset <- left_join(birthdata, salarydata)

dataset$wage <- as.numeric(dataset$wage)

dataset$Okres <- factor(dataset$Okres)

dataset$Okres <- factor(dataset$Okres, levels = c("Bratislava I", "Bratislava II", "Bratislava III", "Bratislava IV", "Bratislava V"))

view(dataset)


Inputs {.sidebar}
-----------------------------------------------------------------------

{r}


selectInput("x", "Choose a District", choices = unique(dataset$Okres))
selectInput("y", "Choose a Year", choices = unique(dataset$Rok))
selectInput("z", "Choose a Job", choices = unique(dataset$jobs))

输出

数据



renderPlot({
  ggplot(dataset, aes_string(x=input$x, y=input$y)) + geom_bar()
})

但是,我无法让它运行,因为它向我显示如下错误:

:1:12: 意外符号 1:布拉迪斯拉发一世 ^

我尝试修复它,它看起来可以正常工作,但过滤器没有反应。条形图没有改变(不是交互式的,所以我确定我在某个地方出错了。

有人愿意帮助一下如何让它运行仪表板吗?

最终输出将用于 y 轴指标,例如年龄、年龄 2、年龄平均值和工资。

非常感谢您的任何建议。

【问题讨论】:

    标签: r shiny rstudio flexdashboard


    【解决方案1】:

    我已经尽力了。我特别修改了您的代码和您的数据,以便快速可视化某些内容。

    [![enter code here][1]][1]
    
    ---
    title: "Title: Bratislava"
    output: 
      flexdashboard::flex_dashboard:
        orientation: columns
        social: menu
        source_code: embed
    runtime: shiny
    ---
    
    ```{r global, include=FALSE}
    
    # load data in 'global' chunk so it can be shared by all users of the dashboard
    library(ggplot2)
    library(flexdashboard)
    library(tidyverse)
    library(tidyquant)
    library(readxl)
    library(shiny)
    
    # birthdata <- read_excel(path = "C:/Users/Dase03/Downloads/mydata.xlsx")
    # salarydata <- read_excel(path = "C:/Users/Dase03/Downloads/salary.xlsx")
    # 
    # salarydata <- salarydata %>%
    #     gather(jobs, wage, -1:-2) 
    # 
    # 
    # salarydata <- salarydata %>%
    #   filter(Rok > 2008 & wage > 0 & wage != "D")
    # 
    # birthdata <- birthdata %>%
    #   filter(Rok > 2008)
    # 
    # 
    # dataset <- left_join(birthdata, salarydata)
    
    # Added for convenience
    dataset <- read_excel(path = "joint_dataset.xlsx")
    
    dataset$age = as.numeric(dataset$age)
    dataset$wage = as.numeric(dataset$wage)
    
    ```
    
    
    Column
    =======================================================================
    
    Inputs {.sidebar}
    -----------------------------------------------------------------------
    
    ```{r}
    
    sliderInput("age", "Select age", min = min(dataset$age), max = max(dataset$age), value = c(min(dataset$age), max(dataset$age)))
    sliderInput("wage", "Select wage", min = min(dataset$wage), max = max(dataset$wage), value = c(min(dataset$wage), max(dataset$wage)))
    
    ```
    
    
    Main panel
    ---------------------------------------------------------------------
    
    ```{r}
    
    renderPlot({
      ggplot(dataset[dataset$age >= min(input$age) & dataset$age <= max(input$age) &
                       dataset$wage >= min(input$wage) & dataset$wage <= max(input$wage),], aes(age, wage)) + geom_line()
    })
    
    ```
    

    .

    请注意Flexdashboard format

    请考虑facilitating reproducibility。例如,dataset$Okres 列突然出现。

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 2019-07-24
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2019-03-07
      • 2020-04-26
      • 2016-10-25
      相关资源
      最近更新 更多