Home Forum Fuoritema dataset in R shiny filtrabile

Questo argomento contiene 2 risposte, ha 2 partecipanti, ed è stato aggiornato da Davide Massidda Davide Massidda 2 anni fa.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #6074
    Francesco Cabiddu
    Francesco Cabiddu
    Amministratore del forum

    Ciao a tutti,
    sto cercando un modo per pubblicare online un dataset in modo che la persona possa consultarlo, filtrando per colonna (e.g. df %>% filter(variabile > n)) o ordinando i dati per colonna (e.g. df %>% arrange(variabile)). Vorrei anche fare in modo che dopo aver filtrato o ordinato il dataset, questo fosse scaricabile nella sua versione modificata.
    Sapete se questo è realizzabile con Shiny? Se si, siccome non mi sono mai cimentato, avreste della documentazione per iniziare a capire come costruire tale applicazione? O un suggerimento di codice generale per iniziare.

    Grazie mille!

    #6075
    Francesco Cabiddu
    Francesco Cabiddu
    Amministratore del forum

    Ci son riuscito. Yuppi! 😀

    
    library(shiny)
    library(tidyverse)
    library(DT)
    
    df <- read_csv("df.csv")
    
    # Define UI
    ui <- fluidPage(
      # Application title
      titlePanel("Table example"),
      
      # Buttons
      downloadButton("downloadData", "Download Source data"),
      downloadButton("downloadFilteredData", "Download filtered data"),
      
      # Show table
      mainPanel(
        DT::dataTableOutput(outputId = "df")
        )
      )
    
    # Define server logic required to show table
    server <- function(input, output, session) {
       
      output$df <- 
        DT::renderDataTable(
          datatable(df,
                    filter = "top",
                    options = list(pageLength = 100, 
                                   lengthMenu = c(10,20, 50, 100, 500, 1000, 5000, 10000, 
                                                  nrow(df)),
                                   paging = TRUE,
                                   search = list(regex = TRUE)))
        )
      
      
      # Downloadable csv of selected dataset ----
      output$downloadData <- downloadHandler(
        filename = function() {
          paste("Source_Data", ".csv", sep = "")
        },
        content = function(file) {
          write.csv(df, file, row.names = FALSE)
        }
      )
      
      output$filtered_row <- 
        renderPrint({
          input[["df_rows_all"]]
        })
      
      output$downloadFilteredData <- 
        downloadHandler(
          filename = "Filtered_Data.csv",
          content = function(file){
            write.csv(df[input[["df_rows_all"]], ],
                      file, row.names = FALSE)
          }
        )
    }
    
    # Run the application 
    shinyApp(ui = ui, server = server)
    
    #6076
    Davide Massidda
    Davide Massidda
    Moderatore

    Troppo tardi per aiutarti ma… mi segno il post che potrebbe tornarmi utile!

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)

Devi essere loggato per rispondere a questa discussione.