¿Cómo leer un archivo XLSX con varias hojas en R?

En este artículo, vamos a ver cómo leer un archivo XLSX con varias hojas en lenguaje R. Hay varios paquetes externos en R que se usan para leer archivos XLSX con varias hojas.

Archivo utilizado:

Método 1: Usando el paquete readxl

El paquete readxl en R se usa para importar y leer libros de trabajo de Excel en R, que se pueden usar para trabajar y modificar fácilmente las hojas .xslsx. Se puede instalar y cargar en el espacio de trabajo R utilizando la siguiente sintaxis: 

install.packages("readxl")

Inicialmente, se invoca el método excel_sheets() para obtener todos los nombres de las hojas de cálculo contenidas en el libro de Excel, con la ruta de archivo especificada. 

excel_sheets(path)

El método lapply() en R se usa para aplicar una función (ya sea definida por el usuario o predefinida) a un conjunto de componentes contenidos dentro de una lista o marco de datos de R. El método lapply() devuelve un objeto de la misma longitud que el objeto de entrada. 

Sintaxis: lapply( obj , FUN)

Argumentos:

obj: el objeto al que se aplica la función 

FUN – La función que se aplicará sobre diferentes componentes del objeto obj. 

FUN es el método read_excel de este almacén de paquetes, que se usa para leer el contenido del nombre de la hoja especificada en un tibble, que es una estructura de tipo tabular que se usa para almacenar datos en filas y columnas fijas. El método lapply aplica el método read_excel sobre cada hoja del libro de trabajo. 

Sintaxis: read_excel(ruta, hoja)

Argumentos:

ruta – La ruta del archivo

hoja: el nombre de la hoja para leer

Los objetos tibble devueltos por el método read_excel se pueden convertir nuevamente al marco de datos usando el método lapply y especificando la función as.data.frame() que convierte cada objeto en un marco de datos. A estos marcos de datos se les pueden asignar los nombres de hoja correspondientes para una mayor claridad utilizando el método R names() incorporado. 

names (df) <- new-name

Código:

R

# importing required packages
library(readxl)    
multiplesheets <- function(fname) {
   
  # getting info about all excel sheets
  sheets <- readxl::excel_sheets(fname)
  tibble <- lapply(sheets, function(x) readxl::read_excel(fname, sheet = x))
  data_frame <- lapply(tibble, as.data.frame)
    
  # assigning names to data frames
  names(data_frame) <- sheets
    
  # print data frame
  print(data_frame)
}
  
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
multiplesheets(path)

Producción:

$Sheet1
ID Name      Job 
1  1    A Engineer 
2  2    B       CA 
3  3    C      SDE 
4  4    D       CA 
5  5    E      SDE  
$Sheet2   
Post Likes 
1    A    23 
2    B    34 
3    C    56 
4    D    78

Método 2: Usando el paquete rio.

paquete de rioestimular

install.packages("rio")

El método import_list() importa una lista de marcos de datos de un archivo de varios objetos, por ejemplo, un libro de Excel o un archivo comprimido R. 

Sintaxis: import_list(archivo)

Argumentos: 

archivo: el nombre de archivo del libro de Excel para acceder

Los nombres de columna y fila se conservan mientras se lee el resultado del libro de Excel. Los nombres de las hojas también son accesibles durante la lectura. 

R

# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
  
# importing the required library
library(rio)
  
# reading data from all sheets
data <- import_list(path)
  
# print data
print (data)

Producción:

$Sheet1
ID Name      Job 
1  1    A Engineer 
2  2    B       CA 
3  3    C      SDE 
4  4    D       CA 
5  5    E      SDE  
$Sheet2   
Post Likes 
1    A    23 
2    B    34 
3    C    56 
4    D    78

Método 3: Uso del paquete openxlsx.

El paquete openxlsx en R se usa para crear y manipular archivos de Excel al proporcionar una interfaz de alto nivel para leer y escribir, así como para modificar las hojas de trabajo en el libro de trabajo especificado. El paquete se puede cargar e instalar en el espacio de trabajo utilizando la siguiente sintaxis: 

install.packages("openxlsx")

El método getSheetNames( ) de este paquete se usa para devolver los nombres de las hojas de trabajo que se encuentran dentro de un archivo xlsx.

getSheetNames(file)

El método lapply() en R se usa para aplicar una función (ya sea definida por el usuario o predefinida) a un conjunto de componentes contenidos dentro de una lista o marco de datos de R. El método lapply() devuelve un objeto de la misma longitud que el objeto de entrada. 

Sintaxis: lapply( obj , FUN)

Argumentos:

obj: el objeto al que se aplica la función 

FUN – La función que se aplicará sobre diferentes componentes del objeto obj. 

Después de la recuperación de los diferentes nombres de las hojas con el método anterior, se aplica la función read.xlsx sobre cada una de las hojas del libro. El método read.xlsx se usa para leer datos de un archivo de Excel o un objeto Workbook en un objeto R data.frame en la ruta de archivo especificada. 

En este caso, el método lapply() toma como entrada los nombres de las hojas y devuelve los marcos de datos correspondientes que pertenecen a cada hoja del libro. Luego, a estos marcos de datos se les asignan los nombres de las hojas usando el método names() en R.

Código:

R

# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
  
# importing the required library
library(openxlsx)
  
# getting data from sheets
sheets <- openxlsx::getSheetNames(path)
data_frame <- lapply(sheets, openxlsx::read.xlsx, xlsxFile=path)
  
# assigning names to data frame
names(data_frame) <- sheets
  
# printing the data
print (data_frame)

Producción:

$Sheet1
ID Name      Job 
1  1    A Engineer 
2  2    B       CA 
3  3    C      SDE 
4  4    D       CA 
5  5    E      SDE  
$Sheet2   
Post Likes 
1    A    23 
2    B    34 
3    C    56 
4    D    78

Publicación traducida automáticamente

Artículo escrito por yashchuahan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *