如何使用R Shiny筛选数据

玛丽亚姆·贾卢里

我有一个数据库,由

  • 中学代码(代码)
  • 学生的性别; 1:男,2:女(Cod_Sexe)
  • 关于学生的决定;A:通过; R:失败(决策)
  • 该年学生的行为; 0:不良; 1:良好(合格)。

该数据分为3年:2008、2011和2014。我使用R Shiny,创建了性别,决策和行为图表,并仅显示中学和学生的数量。现在,我希望使用户能够根据特定年份过滤此数据。这是代码:

用户界面

 ui <- fluidPage( 
    textOutput("inst_nbr"),
    textOutput("stunbr"),
    plotOutput("plot_decision"),
    plotOutput("genderdonut"),
    plotOutput("Conduite"),
    checkboxGroupInput(inputId = "YearSelect", "Select the corresponding year", 
      choices = levels(factor(Test2008$Year)), selected = levels(factor(Test2008$Year)))
)

inst_nbr:中学编号/学生人数:学生人数/ plot_decision:决策的直方图(A / R)/ genderdonut:donut性别分布图/ Conduite:donut行为图表/ YearSelect:从数据库创建的过滤器

服务器

# CREATE YEAR FILTER
    TestFilter <- reactive({ # <-- Reactive function here
        Test2008 %>% 
            filter(Test2008$Year == input$YearSelect)
    })

# NBR OF INSTITUTIONS
    output$inst_nbr=  renderText({
        Test=TestFilter()
        length(unique(x = Test$Code))
        })

# PLOT DECISION DIAGRAM
    # % of each decison
    Per_A= 100*length(which(Test2008$Decision=='A'))/length(Test2008$Decision)
    Per_R= 100*length(which(Test2008$Decision=='R'))/length(Test2008$Decision)
    DecisionName=c('Accepté','Refusé')
    DecisionFraction=c(Per_A,Per_R)
    # Plot of decisions
    output$plot_decision=renderPlot({
        Test=TestFilter()
        barplot(height= DecisionFraction, names = DecisionName )
    })   

我将过滤器应用于中学的数量,仅当我每年检查一次时,它就会起作用,但是当我选中所有复选框时,它不会返回总数。另一方面,我不知道如何将其应用于图表。另外,当我运行应用程序时,我得到这些错误:

警告:错误:filter()输入出现问题..1x输入..1的大小必须为111613或1,而不是0。i输入..1Test2008$Year == input$YearSelect170 :(当未选中任何框时发生)

Test2008 $ Year == input $ YearSelect中的警告:较长的对象长度不是较短的对象长度的倍数

虚拟数据

Code     Cod_sexe    conduite   decision    year 
1002        1           1           A       2008
2065        1           0           R       2008
1002        2           1           A       2008
4225        2           1           R       2011        
2005        1           1           R       2011
1003        2           0           R       2014
2005        2           0           A       2014
伊斯米尔谢尔夫

如果要使绘图成为反应性,则需要使用反应性数据集TestFilter而不是静态data.frameTest2008来创建绘图。

我不确定这是否是您想要的逻辑,但这应该可以帮助您入门。

请检查以下内容:

library(shiny)
library(dplyr)

Test2008 <- data.frame(
  stringsAsFactors = FALSE,
  Code = c(1002L, 2065L, 1002L, 4225L, 2005L, 1003L, 2005L),
  Cod_sexe = c(1L, 1L, 2L, 2L, 1L, 2L, 2L),
  conduite = c(1L, 0L, 1L, 1L, 1L, 0L, 0L),
  Decision = c("A", "R", "A", "R", "R", "R", "A"),
  Year = c(2008L, 2008L, 2018L, 2011L, 2011L, 2014L, 2014L)
)

ui <- fluidPage(
  checkboxGroupInput(
    inputId = "YearSelect",
    "Select the corresponding year",
    choices = unique(Test2008$Year),
    selected = unique(Test2008$Year)
  ),
  textOutput("inst_nbr"),
  textOutput("stunbr"),
  plotOutput("plot_decision"),
  plotOutput("genderdonut"),
  plotOutput("Conduite")
)

server <- function(input, output, session) {
  # CREATE YEAR FILTER
  TestFilter <- reactive({
    Test2008 %>% filter(Year %in% input$YearSelect)
  })
  
  # NBR OF INSTITUTIONS
  output$inst_nbr = renderText({
    length(unique(TestFilter()$Code))
  })
  
  # PLOT DECISION DIAGRAM
  output$plot_decision = renderPlot({
    req(TestFilter())
    # % of each decison
    Per_A = 100 * length(which(TestFilter()$Decision == 'A')) / length(TestFilter()$Decision)
    Per_R = 100 * length(which(TestFilter()$Decision == 'R')) / length(TestFilter()$Decision)
    DecisionName = c('Accepté', 'Refusé')
    DecisionFraction = c(Per_A, Per_R)
    barplot(height = DecisionFraction, names = DecisionName)
  })
}

shinyApp(ui, server)

结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提交基于响应的已筛选可见数据后,如何更新Shiny Datatable?

来自分类Dev

如何从SQLDataSource筛选数据

来自分类Dev

使用VBA筛选Excel数据

来自分类Dev

筛选闪亮R中的反应数据集

来自分类Dev

如何根据标准筛选数据帧?

来自分类Dev

在SQL Server中使用GROUP BY筛选数据

来自分类Dev

如何使用 PowerShell 读取 XML 文件并筛选所需数据

来自分类Dev

如何使用Shiny绘制上传的数据集?

来自分类Dev

R/Shiny 数据框列

来自分类Dev

在R Shiny中,如何使用在obtainEvent之外的observeEvent(单击按钮)中生成的数据?

来自分类Dev

如何使用R Shiny中的多个动作按钮连续操作数据帧?

来自分类Dev

如何使用选择输入在 r Shiny 中对数据帧进行子集化?

来自分类Dev

R数据框按类别ID筛选多个逻辑条件

来自分类Dev

筛选出数据框R中的唯一对

来自分类Dev

筛选R中具有重复行的数据集

来自分类Dev

如何为搜索后筛选构建数据库架构

来自分类Dev

如何筛选数据库以查找缺失的观测值

来自分类Dev

如何筛选Excel数据透视表中的一列

来自分类Dev

如何在SQL的非工作日中筛选数据

来自分类Dev

如何从表中筛选数据并将其显示在DataGridView中?

来自分类Dev

如何从Asp .Net C#中的日期筛选数据?

来自分类Dev

使用筛选器标记敏感数据以获取mousestats

来自分类Dev

SQL使用WHERE筛选出数据并保留其余部分

来自分类Dev

使用Azure存储容器元数据作为搜索筛选器

来自分类Dev

使用筛选器标记敏感数据以获取mousestats

来自分类Dev

使用 LINQ 从 SQL 数据库表中筛选元素

来自分类Dev

如何使用xlswritter对单个工作表中的多个数据框使用自动筛选

来自分类Dev

如何使用jQuery从数据表中选择按钮单击上的筛选结果

来自分类Dev

如何使用Entity Framework以可编辑的DataGridView和上下文跟踪更改的方式筛选数据?

Related 相关文章

  1. 1

    提交基于响应的已筛选可见数据后,如何更新Shiny Datatable?

  2. 2

    如何从SQLDataSource筛选数据

  3. 3

    使用VBA筛选Excel数据

  4. 4

    筛选闪亮R中的反应数据集

  5. 5

    如何根据标准筛选数据帧?

  6. 6

    在SQL Server中使用GROUP BY筛选数据

  7. 7

    如何使用 PowerShell 读取 XML 文件并筛选所需数据

  8. 8

    如何使用Shiny绘制上传的数据集?

  9. 9

    R/Shiny 数据框列

  10. 10

    在R Shiny中,如何使用在obtainEvent之外的observeEvent(单击按钮)中生成的数据?

  11. 11

    如何使用R Shiny中的多个动作按钮连续操作数据帧?

  12. 12

    如何使用选择输入在 r Shiny 中对数据帧进行子集化?

  13. 13

    R数据框按类别ID筛选多个逻辑条件

  14. 14

    筛选出数据框R中的唯一对

  15. 15

    筛选R中具有重复行的数据集

  16. 16

    如何为搜索后筛选构建数据库架构

  17. 17

    如何筛选数据库以查找缺失的观测值

  18. 18

    如何筛选Excel数据透视表中的一列

  19. 19

    如何在SQL的非工作日中筛选数据

  20. 20

    如何从表中筛选数据并将其显示在DataGridView中?

  21. 21

    如何从Asp .Net C#中的日期筛选数据?

  22. 22

    使用筛选器标记敏感数据以获取mousestats

  23. 23

    SQL使用WHERE筛选出数据并保留其余部分

  24. 24

    使用Azure存储容器元数据作为搜索筛选器

  25. 25

    使用筛选器标记敏感数据以获取mousestats

  26. 26

    使用 LINQ 从 SQL 数据库表中筛选元素

  27. 27

    如何使用xlswritter对单个工作表中的多个数据框使用自动筛选

  28. 28

    如何使用jQuery从数据表中选择按钮单击上的筛选结果

  29. 29

    如何使用Entity Framework以可编辑的DataGridView和上下文跟踪更改的方式筛选数据?

热门标签

归档