studio - trabajar con datos de excel en r



¿Cómo puedo leer varios archivos(Excel) en R? (1)

Con list.files puede crear una lista de todos los nombres de archivo en su directorio de trabajo. A continuación, puede usar lapply para recorrer esa lista y leer cada archivo con la función readxl paquete readxl :

library(readxl)
file.list <- list.files(pattern='*.xlsx')
df.list <- lapply(file.list, read_excel)

Por supuesto, este método también se puede usar con otras funciones de lectura de archivos como read.csv o read.table . Simplemente reemplace read_excel con la función de lectura de archivos adecuada y asegúrese de usar el patrón correcto en list.files .

Si también desea incluir los archivos en subdirectorios, use:

file.list <- list.files(pattern='*.xlsx', recursive = TRUE)

Otros paquetes posibles para leer archivos Excel: openxlsx y xlsx

Suponiendo que las columnas son las mismas para cada archivo, puede vincularlas en un solo bind_rows de dplyr con bind_rows de dplyr :

library(dplyr)
df <- bind_rows(df.list, .id = "id")

o con rbindlist de data.table :

library(data.table)
df <- rbindlist(df.list, idcol = "id")

Ambos tienen la opción de agregar una columna de identificación para identificar los conjuntos de datos separados.

Actualización: si no desea un identificador numérico, simplemente use sapply con simplify = FALSE para leer los archivos en file.list :

df.list <- sapply(file.list, read.csv, simplify=FALSE)

Al usar bind_rows de dplyr o rbindlist de data.table , la columna de id ahora contiene los nombres de archivo.

Incluso otro enfoque es usar el paquete purrr :

library(purrr)
file.list <- list.files(pattern='*.csv')
file.list <- setNames(file.list, file.list) # only needed when you need an id-column with the file-names

df <- map_df(file.list, read.csv, .id = "id")

Otros enfoques para obtener una lista con nombre: si no desea solo un identificador numérico, puede asignar los nombres de archivo a los marcos de datos en la lista antes de unirlos. Hay varias maneras de hacer esto:

# with the 'attr' function from base R
attr(df.list, "names") <- file.list
# with the 'names' function from base R
names(df.list) <- file.list
# with the 'setattr' function from the 'data.table' package
setattr(df.list, "names", file.list)

Ahora puede enlazar la lista de tramas de datos juntas en una trama de datos con rbindlist de data.table o bind_rows de dplyr . La columna de id ahora contendrá los nombres de archivo en lugar de un identificador numérico.

Esta pregunta ya tiene una respuesta aquí:

Tengo cientos de archivos Excel de tamaño mediano (entre 5000 y 50.0000 filas con aproximadamente 100 columnas) para cargar en R. Tienen un patrón de nombres bien definido, como x_1.xlsx , x_2.xlsx , etc.

¿Cómo puedo cargar estos archivos en R de la manera más rápida y directa?





import