Vector JX
Vector JX

Reputation: 179

How to pass dataframe in shiny to create dashboard in R

I have below mentioned a dataframe in 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

Using above mentioned dataframe, I have created below mentioned pivot dataframe in 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

And just want a little help here to understand how can I use the Date here on month wise to create a shiny dashboard, where it gives me count based on particular month range or date range.

I am using below mentioned sample code to pass the dataframe, but it didn't work.

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)

Upvotes: 1

Views: 335

Answers (1)

clemens
clemens

Reputation: 6813

You could use tableHTML for that:

Add the tableHTML_output() to your UI to display the table:

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

In server, create a tableHTML object in render_tableHTML(). You can adjust the appearance of the table, check out the vignettes for details.

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)

The final result looks like this:

output

Upvotes: 2

Related Questions