Team Ai
Apppublic

TimStats/CSVCombiner

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.R58 linesDownload Raw Back to root
1library(shiny)2library(data.table)3library(dplyr)4library(shinycssloaders)5options(shiny.maxRequestSize = 100000 * 1024^2)6ui <- fluidPage(7  titlePanel("CSV File Combiner"),8  sidebarLayout(9    sidebarPanel(10      fileInput("file_input", "Choose CSV Files", multiple = TRUE, accept = c("text/csv", ".csv")),11      actionButton("combine_button", "Combine Files"),12      br(),13      br(),14      downloadButton("download_data", "Download Combined CSV")15    ),16    mainPanel(17      withSpinner(tableOutput("preview_table"))18    )19  )20)21 22server <- function(input, output, session) {23  combined_data <- reactiveVal(NULL)24  25  observeEvent(input$combine_button, {26    req(input$file_input)27    28    withProgress(message = 'Combining files', value = 0, {29      combined <- data.frame()30      31      for (i in 1:nrow(input$file_input)) {32        file <- input$file_input$datapath[i]33        data <- fread(file)34        combined <- rbind(combined, data)35        36        incProgress(1/nrow(input$file_input), detail = paste("Processing file", i))37      }38      39      combined_data(combined)40    })41  })42  43  output$preview_table <- renderTable({44    req(combined_data())45    head(combined_data(), 10)46  })47  48  output$download_data <- downloadHandler(49    filename = function() {50      paste("combined_data_", Sys.Date(), ".csv", sep = "")51    },52    content = function(file) {53      write.csv(combined_data(), file, row.names = FALSE)54    }55  )56}57 58shinyApp(ui = ui, server = server)