es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo leer archivos .xpt?

Estoy trabajando en una aplicación R shiny que lee archivos xpt.

El código a continuación lee un archivo csv y muestra una tabla. Sin embargo, estoy buscando una forma de ver/mostrar lo mismo desde un archivo .xpt usando la función sasxport.get. ¿Alguien podría ayudarme con esto en R shiny?

app.R (actualmente lee csv)


# Solo ejecutar ejemplos en sesiones interactivas de R if (interactive()) { ui <- fluidPage( sidebarLayout( sidebarPanel( fileInput("file1", "Elegir archivo CSV", accept = c( "text/csv", "text/comma-separated-values,text/plain", ".csv") ), tags$hr(), checkboxInput("header", "Encabezado", TRUE) ), mainPanel( tableOutput("contents") ) ) ) server <- function(input, output) { output$contents <- renderTable({ # input$file1 será NULL inicialmente. Después de que el usuario seleccione # y suba un archivo, será un data frame con las columnas 'name', 'size', # 'type' y 'datapath'. La columna 'datapath' contendrá los nombres de archivo # locales donde se puede encontrar los datos. inFile <- input$file1 if (is.null(inFile)) return(NULL) read.csv(inFile$datapath, header = input$header) }) } shinyApp(ui, server) }
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar datos de un archivo .xpt usando R Shiny, se puede utilizar la función sasxport.get del paquete ‘SASxport’. Aquí hay un ejemplo de código que muestra cómo leer un archivo .xpt y mostrar su contenido en una tabla utilizando una interfaz basada en web:

    ## Cargar las bibliotecas necesarias
    library(shiny)
    library(SASxport)
    
    ## Definir la interfaz de usuario
    ui <- fluidPage(
      sidebarLayout(
        sidebarPanel(
          fileInput("file1", "Seleccionar archivo XPT",
            accept = c(".xpt"))
        ),
        mainPanel(
          tableOutput("contents")
        )
      )
    )
    
    ## Definir la función del servidor
    server <- function(input, output) {
      output$contents <- renderTable({
        inFile <- input$file1
    
        if (is.null(inFile))
          return(NULL)
    
        ## Cargar los datos desde el archivo XPT
        data <- sasxport.get(inFile$datapath)
    
        ## Convertir los datos a un data frame y devolverlo
        as.data.frame(data)
      })
    }
    
    ## Ejecutar la aplicación
    shinyApp(ui, server)
    

    En este código, hemos añadido una entrada de archivo para que el usuario seleccione un archivo .xpt, y hemos modificado la función del servidor para leer los datos del archivo utilizando sasxport.get en lugar de read.csv. Luego convertimos los datos a un data frame y los mostramos utilizando renderTable y tableOutput. Ten en cuenta que también hemos limitado la entrada de archivos para aceptar solo archivos .xpt utilizando el argumento accept de fileInput.

Comments are closed.