如何在Shiny中传递数据框以在R中创建仪表板

时间:2018-09-21 08:09:11

标签: r shiny

下面我在R中提到了一个数据框。

Dev1:

ID        Date                   Value        Result
KK-112    2018-07-01 15:37:45    ACR          Pending
KK-113    2018-07-05 18:14:25    ACR          Pass
KK-114    2018-07-07 13:21:55    ARR          Accepted
KK-115    2018-07-12 07:47:05    ARR          Rejected
KK-116    2018-07-04 11:31:12    RTR          Duplicate
KK-117    2018-07-07 03:27:15    ACR          Pending
KK-118    2018-07-18 08:16:32    ARR          Rejected
KK-119    2018-07-21 18:19:14    ACR          Pending

使用上述数据框,我在R中创建了以下数据透视表数据框。

Value      Pending   Pass    Accepted   Rejected   Duplicate
ACR          3        1         0          0          0
ARR          0        0         1          2          0
RTR          0        0         0          0          0

这里只需要一点帮助,以了解我如何才能在一个月内在这里使用Date来创建一个闪亮的仪表板,它可以根据特定的月份范围或日期范围为我计数。

我正在使用下面提到的示例代码来传递数据框,但是没有用。

library(shiny)
library(dplyr)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)
server <- function(input, output) {

Date<-Dev1$Date

{
Pivot<-dcast(Dev1, Value ~ Result, value.var="ID", 
             fun.aggregate=length)

Pivot$Total<-rowSums(Pivot[2:3])

}
 }
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:2)

您可以使用tableHTML

tableHTML_output()添加到您的UI中以显示表格:

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tableHTML_output("mytable")
  )
)

在服务器中,在tableHTML中创建一个render_tableHTML()对象。您可以调整表格的外观,查看小插图以了解详细信息。

server <- function(input, output) {

  Date<-Dev1$Date

  {
    output$mytable <- render_tableHTML( {
      Pivot<-data.table::dcast(Dev1, Value ~ Result, value.var="ID", 
                               fun.aggregate=length)

      Pivot$Total<-rowSums(Pivot[2:3])

      Pivot %>% 
        tableHTML(rownames = FALSE,
                  widths = rep(80, 7))
    })


  }
}
shinyApp(ui, server)

最终结果如下:

output