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.

¿Fijar el número de columnas en read_csv()?

Resumen: ¿Cómo configuro Rstudio para importar un CSV como tibble exactamente como Microsoft Excel (versión de Rstudio para Mac: versión 1.3.959, Excel para Mac: versión 16.33 si eso ayuda)? Si esto no es posible o ya debería comportarse de la misma manera, ¿cómo lo configuro para leer un archivo CSV con no más de 8 columnas y rellenar valores en blanco en filas para poder ordenarlo?

Versión larga:

Tengo una docena de archivos CSV (recopilados de etiquetas animales de archivo) que son desordenados (ancho inconsistente, múltiples bloques de datos en un archivo) y necesitan ser leídos. Por razones de flujo de trabajo, me gustaría tomar los datos brutos y traerlos directamente a R. Los datos tienen una estructura consistente entre archivos: un bloque de metadatos, un resumen por día que tiene 6 columnas de ancho y 2 bloques de registro constante que tienen 2 columnas de ancho. Si contara las celdas vacías en cada sección, serían:

Sección Ancho Longitud
Metadatos 8 37
Resumen de bloque 7 N días
Bloque 1 2 N72
Bloque 2 2 N72

Los tres últimos bloques de datos pueden tener miles de entradas. No puedo cargar estos datos en R como nada más que un único marco de datos de 1×500,000+. Al usar tag1 = read_csv(‘file’, skip = 37) para comenzar solo con los datos que quiero, R se bloquea. Funciona con read.csv(), pero eso elimina el bloque de metadatos que me gustaría conservar.

Intentar leer el archivo en Excel muestra el formato correcto (ancho, longitud, etc.), pero no cargará todos los datos. Corta una buena cantidad del último bloque de datos. Leer los datos en un formato tabular como read_xl() presenta el mismo problema.

En última instancia, me gustaría importar los datos como un tibble anidado con estas diferentes secciones, o mejor aún, automatizar este proceso para que pueda leer toda una carpeta de archivos CSV, asignarlos automáticamente a variables y dividirlos en secciones. Sin embargo, por ahora solo quiero conseguir estos datos en un formato útil intacto y agradecería cualquier ayuda que puedan darme.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para configurar RStudio para importar un archivo CSV como tibble exactamente igual que Microsoft Excel, puede utilizar el paquete readxl en lugar de readr. El paquete readxl le permite leer archivos de Excel directamente, lo que garantiza que los datos se lean de la misma manera que si se abrieran en Excel. Para instalar el paquete readxl, utilice install.packages("readxl") y luego use la función read_excel() en lugar de read_csv() para leer su(s) archivo(s).

    Si desea leer un archivo CSV con no más de 8 columnas y completar valores vacíos en filas para poder ordenarlo, puede usar el argumento fill en la función read_csv(). Establézcalo en TRUE para completar los valores faltantes con NA. Para limitar el número de columnas, use el argumento col_types para especificar los tipos de datos de cada columna (por ejemplo, "ccccccccc" para 9 columnas de datos de caracteres). Aquí hay un ejemplo de código:

    library(readr)
    
    # Leer archivo CSV con no más de 8 columnas y completar valores faltantes con NA
    df <- read_csv("ruta/al/archivo.csv", col_types = "cccccccc", fill = TRUE)
    

    Una vez que tenga los datos en forma de tibble o data frame, puede utilizar varias funciones de ordenamiento como tidyr::pivot_longer() o dplyr::gather() para dar forma a los datos en un formato más manejable.

    Para automatizar el proceso con varios archivos, puede utilizar funciones como list.files() para obtener una lista de todos los archivos en un directorio y luego recorrerlos usando lapply() o un bucle for para leerlos uno por uno. Puede almacenar los datos en una lista o un tibble anidado y luego utilizar funciones adicionales para procesar o manipular los datos.

Comments are closed.