#' Interface to import and concatenate datasets having the same format.
#' @return A tibble resulting for the concatenation of all the files.
#' @importFrom miniUI miniPage
#' @importFrom miniUI gadgetTitleBar
#' @importFrom miniUI miniTabstripPanel
#' @importFrom miniUI miniTabPanel
#' @importFrom miniUI miniContentPanel
#' @importFrom shiny fillCol
#' @importFrom shiny fillRow
#' @importFrom shiny callModule
#' @importFrom shiny icon
#' @importFrom shiny fileInput
#' @importFrom shiny textInput
#' @importFrom shiny dateInput
#' @importFrom shiny numericInput
#' @importFrom shiny textAreaInput
#' @importFrom shiny selectInput
#' @importFrom shiny checkboxInput
#' @importFrom shiny downloadButton
#' @importFrom shiny downloadHandler
#' @importFrom shiny stopApp
#' @importFrom shiny runGadget
#' @importFrom shiny conditionalPanel
#' @importFrom shiny tags
#' @importFrom shiny dataTableOutput
#' @importFrom shiny htmlOutput
#' @importFrom shiny uiOutput
#' @importFrom shiny plotOutput
#' @importFrom shiny actionButton
#' @importFrom shiny renderDataTable
#' @importFrom shiny renderUI
#' @importFrom shiny renderPlot
#' @importFrom shiny renderText
#' @importFrom shiny reactive
#' @importFrom shiny reactiveValues
#' @importFrom shiny observe
#' @importFrom shiny observeEvent
#' @importFrom shiny withProgress
#' @importFrom shiny incProgress
#' @importFrom shiny h3
#' @importFrom shiny isolate
#' @importFrom shiny reactiveValuesToList
#' @importFrom shiny tableOutput
#' @importFrom shiny renderTable
#' @importFrom shiny HTML
#' @importFrom dplyr select
#' @importFrom dplyr filter
#' @importFrom dplyr group_by
#' @importFrom dplyr summarize_all
#' @importFrom dplyr mutate
#' @importFrom dplyr %>%
#' @importFrom dplyr case_when
#' @importFrom dplyr arrange
#' @importFrom dplyr bind_rows
#' @importFrom dplyr everything
#' @importFrom utils write.csv
#' @export
datexp_gather <- function() {
ui <- miniPage(
gadgetTitleBar("Gather data into a single dataset"),
fillRow(
flex = c(1, 3),
miniContentPanel(
importFilesInput("files", "Select files to import"),
actionButton("import", "Import"),
tags$hr(),
downloadButton("downloadData", "Download")
),
miniContentPanel(
dataTableOutput("dispdata")
)
)
)
server <- function(input, output, session) {
options(shiny.maxRequestSize = 50 * 1024 ^ 2)
################
# Import data
concatenation <- callModule(importFiles, "files",
stringsAsFactors = FALSE)
output$dispdata <- renderDataTable({
if (input$import == 0) {
return()
}
isolate({
concatenation()
})
})
#################
# On exit
output$downloadData <- downloadHandler(
filename = "concatenation.csv",
content = function(file) {
write.csv(concatenation(), file, row.names = F)
}
)
observeEvent(input$done, {
stopApp(concatenation())
})
}
runGadget(ui, server)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.