Contexto

- Se tienen varios archivos excel, de los cuales se desea leer cada
hoja como un dataframe distinto, considerando nombres con sufijos
consecutivos
- Podría servir para un proceso de análisis o preparación de datos
# No hay ningun objeto creado
ls()
character(0)
Se crea un vector caracter con los nombres de los archivos
Excel
file.list = list.files(pattern = '*.xlsx')
file.list
[1] "TIENDA_A.xlsx" "TIENDA_B.xlsx"
Ejemplo de leer la 1ra hoja del 1er archivo Excel
library(readxl)
Warning: package ‘readxl’ was built under R version 4.2.1
head(read_excel(file.list[1],sheet = 1), 5)
Ejemplo de obtener los nombres de las hojas del 1er archivo
Excel
excel_sheets(file.list[1])
[1] "ENERO" "FEBRERO" "MARZO"
Ejemplo de leer la 2da hoja del 1er archivo Excel
head(read_excel(file.list[1],sheet = 2), 5)
Bucle que creará dataframes por cada hoja Excel 🤓
# bucle q seleccionara cada archivo excel
for(i in 1:length(file.list)){
# crea un lista y cada elemento es un dataframe de cada hoja del archivo excel
sheet_list = lapply(excel_sheets(file.list[i]), read_excel, path=file.list[i])
# bucle que seleccionara cada elemento de la lista
for (j in 1:(length(sheet_list))){
# se crean distintos dataframes por cada elemento de la lista
# cada elemento tendra un nombre consecutivo:
# 1ro se obtiene el nombre del archivo quitando la extension .xslx (nchar, substr)
# ejemplo: de "TIENDA_A.xlsx" a "TIENDA_A"
# 2do se adiciona un sufijo consecutivo _#
# ejemplo: "TIENDA_A_1" (paste)
# 3ro se asignan los nombres consecutivos a cada elemento de la lista
# creando asi distintos dataframes con nombres consecutivos
# ejemplo: TIENDA_A_1, TIENDA_A_2, etc...
sheet_list[[j]] = assign(paste(substr(file.list[i],1,(nchar(file.list[i])-5)),
j, sep = "_"), sheet_list[[j]])
}
}
# Se observa los dataframes creados
ls()
[1] "file.list" "i" "j" "sheet_list" "TIENDA_A_1" "TIENDA_A_2" "TIENDA_A_3"
[8] "TIENDA_B_1" "TIENDA_B_2" "TIENDA_B_3"
head(TIENDA_A_1, 5)
head(TIENDA_A_2, 5)
LS0tDQp0aXRsZTogIkNyZWFyIGRhdGFmcmFtZXMgcG9yIGNhZGEgaG9qYSBFeGNlbCINCmF1dGhvcjogIkNhbGViIFRlcnJlbCBPcmVsbGFuYSwgKmNhbGViLnRlcnJlbEBnbWFpbC5jb20qIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMgQ29udGV4dG8NCg0KIVtdKEQ6L0N1cnNvcy9BbmFseXRpY3NfU29sdXRpb25zL0NyZWFyRGF0YWZyYW1lc1BvckNhZGFIb2phRXhjZWwvaW1nL2ltZzMucG5nKXt3aWR0aD0nMTAwcHgnfQ0KDQoqIFNlIHRpZW5lbiB2YXJpb3MgYXJjaGl2b3MgZXhjZWwsIGRlIGxvcyBjdWFsZXMgc2UgZGVzZWEgbGVlciANCmNhZGEgaG9qYSBjb21vIHVuIGRhdGFmcmFtZSBkaXN0aW50bywgY29uc2lkZXJhbmRvIG5vbWJyZXMgY29uIHN1Zmlqb3MgY29uc2VjdXRpdm9zDQoNCjxwIGFsaWduPSJjZW50ZXIiPg0KIVtdKEQ6L0N1cnNvcy9BbmFseXRpY3NfU29sdXRpb25zL0NyZWFyRGF0YWZyYW1lc1BvckNhZGFIb2phRXhjZWwvaW1nL2FyY2hpdm9zLnBuZykNCjwvcD4NCg0KDQo8cCBhbGlnbj0iY2VudGVyIj4NCiFbXShEOi9DdXJzb3MvQW5hbHl0aWNzX1NvbHV0aW9ucy9DcmVhckRhdGFmcmFtZXNQb3JDYWRhSG9qYUV4Y2VsL2ltZy9ob2phcy5wbmcpe3dpZHRoPSczMDBweCd9DQo8L3A+DQoNCiogUG9kcsOtYSBzZXJ2aXIgcGFyYSB1biBwcm9jZXNvIGRlIGFuw6FsaXNpcyBvIHByZXBhcmFjacOzbiBkZSBkYXRvcw0KPHAgYWxpZ249ImNlbnRlciI+DQohW10oRDovQ3Vyc29zL0FuYWx5dGljc19Tb2x1dGlvbnMvQ3JlYXJEYXRhZnJhbWVzUG9yQ2FkYUhvamFFeGNlbC9pbWcvb2gteWVhaC1kYW5jZS5naWYpe3dpZHRoPSczMDBweCd9DQo8L3A+DQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0UsIGVjaG89RkFMU0V9DQpyZXF1aXJlKCJrbml0ciIpDQpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gIkQ6L0N1cnNvcy9BbmFseXRpY3NfU29sdXRpb25zL0NyZWFyRGF0YWZyYW1lc1BvckNhZGFIb2phRXhjZWwvZGF0YSIpDQpgYGANCg0KYGBge3J9DQojIE5vIGhheSBuaW5ndW4gb2JqZXRvIGNyZWFkbw0KbHMoKQ0KYGBgDQojIyMgU2UgY3JlYSB1biB2ZWN0b3IgY2FyYWN0ZXIgY29uIGxvcyBub21icmVzIGRlIGxvcyBhcmNoaXZvcyBFeGNlbA0KYGBge3J9DQpmaWxlLmxpc3QgPSBsaXN0LmZpbGVzKHBhdHRlcm4gPSAnKi54bHN4JykNCmZpbGUubGlzdA0KYGBgDQoNCiMjIyBFamVtcGxvIGRlIGxlZXIgbGEgMXJhIGhvamEgZGVsIDFlciBhcmNoaXZvIEV4Y2VsDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkeGwpDQpoZWFkKHJlYWRfZXhjZWwoZmlsZS5saXN0WzFdLHNoZWV0ID0gMSksIDUpDQpgYGANCg0KIyMjIEVqZW1wbG8gZGUgb2J0ZW5lciBsb3Mgbm9tYnJlcyBkZSBsYXMgaG9qYXMgZGVsIDFlciBhcmNoaXZvIEV4Y2VsDQoNCmBgYHtyfQ0KZXhjZWxfc2hlZXRzKGZpbGUubGlzdFsxXSkNCmBgYA0KDQojIyMgRWplbXBsbyBkZSBsZWVyIGxhIDJkYSBob2phIGRlbCAxZXIgYXJjaGl2byBFeGNlbA0KDQpgYGB7cn0NCmhlYWQocmVhZF9leGNlbChmaWxlLmxpc3RbMV0sc2hlZXQgPSAyKSwgNSkNCmBgYA0KDQojIyMgQnVjbGUgcXVlIGNyZWFyw6EgZGF0YWZyYW1lcyBwb3IgY2FkYSBob2phIEV4Y2VsIPCfpJMNCg0KYGBge3J9DQojIGJ1Y2xlIHEgc2VsZWNjaW9uYXJhIGNhZGEgYXJjaGl2byBleGNlbA0KZm9yKGkgaW4gMTpsZW5ndGgoZmlsZS5saXN0KSl7DQogICMgY3JlYSB1biBsaXN0YSB5IGNhZGEgZWxlbWVudG8gZXMgdW4gZGF0YWZyYW1lIGRlIGNhZGEgaG9qYSBkZWwgYXJjaGl2byBleGNlbA0KICBzaGVldF9saXN0ID0gbGFwcGx5KGV4Y2VsX3NoZWV0cyhmaWxlLmxpc3RbaV0pLCByZWFkX2V4Y2VsLCBwYXRoPWZpbGUubGlzdFtpXSkgDQogICMgYnVjbGUgcXVlIHNlbGVjY2lvbmFyYSBjYWRhIGVsZW1lbnRvIGRlIGxhIGxpc3RhDQogIGZvciAoaiBpbiAxOihsZW5ndGgoc2hlZXRfbGlzdCkpKXsNCiAgICAjIHNlIGNyZWFuIGRpc3RpbnRvcyBkYXRhZnJhbWVzIHBvciBjYWRhIGVsZW1lbnRvIGRlIGxhIGxpc3RhDQogICAgIyBjYWRhIGVsZW1lbnRvIHRlbmRyYSB1biBub21icmUgY29uc2VjdXRpdm86DQogICAgIyAxcm8gc2Ugb2J0aWVuZSBlbCBub21icmUgZGVsIGFyY2hpdm8gcXVpdGFuZG8gbGEgZXh0ZW5zaW9uIC54c2x4IChuY2hhciwgc3Vic3RyKQ0KICAgICMgZWplbXBsbzogZGUgIlRJRU5EQV9BLnhsc3giIGEgIlRJRU5EQV9BIg0KICAgICMgMmRvIHNlIGFkaWNpb25hIHVuIHN1ZmlqbyBjb25zZWN1dGl2byBfIw0KICAgICMgZWplbXBsbzogIlRJRU5EQV9BXzEiIChwYXN0ZSkNCiAgICAjIDNybyBzZSBhc2lnbmFuIGxvcyBub21icmVzIGNvbnNlY3V0aXZvcyBhIGNhZGEgZWxlbWVudG8gZGUgbGEgbGlzdGENCiAgICAjICAgICBjcmVhbmRvIGFzaSBkaXN0aW50b3MgZGF0YWZyYW1lcyBjb24gbm9tYnJlcyBjb25zZWN1dGl2b3MNCiAgICAjIGVqZW1wbG86IFRJRU5EQV9BXzEsIFRJRU5EQV9BXzIsIGV0Yy4uLg0KICAgIHNoZWV0X2xpc3RbW2pdXSA9IGFzc2lnbihwYXN0ZShzdWJzdHIoZmlsZS5saXN0W2ldLDEsKG5jaGFyKGZpbGUubGlzdFtpXSktNSkpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiwgc2VwID0gIl8iKSwgc2hlZXRfbGlzdFtbal1dKSANCiAgICANCiAgfQ0KfQ0KYGBgDQoNCmBgYHtyfQ0KIyBTZSBvYnNlcnZhIGxvcyBkYXRhZnJhbWVzIGNyZWFkb3MNCmxzKCkNCmBgYA0KDQoNCmBgYHtyfQ0KaGVhZChUSUVOREFfQV8xLCA1KQ0KaGVhZChUSUVOREFfQV8yLCA1KQ0KYGBgDQo=