[英]Flexdashboard in R with Shiny
我試圖在 flexdashboard 和閃亮的幫助下在 R 中創建一個交互式儀表板。
我有這張表,其中有七列(翻譯成英文):地區、年份、年齡、年齡 2、年齡平均值、工作職位和工資。
我嘗試做的是使用 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: Bratislava I ^
我試圖修復它,它看起來有效,但過濾器沒有反應。 條形圖沒有改變(不是交互式的,所以我確定我在某個地方出錯了。
有人願意幫助一下如何讓它運行儀表板嗎?
最終輸出將用於 y 軸指標,如年齡、年齡 2、年齡平均值和工資。
非常感謝您的任何建議。
我已經盡力了。 我特別修改了您的代碼和您的數據,以便快速可視化某些內容。
[![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 格式。
請考慮促進重現性。 例如,列dataset$Okres
突然出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.