El paquete xlsx es un paquete (programa) muy potente usado por el Lenguaje R, para leer, escribir y dar formato a archivos de Excel. Es una solución basada en Java y está disponible para Windows, Mac y Linux. Esta versión trabaja para las versiones de Excel 97, 2000, XP, 2003 y 2007.Los formatos de Excel que usa este paquete son (xls y xlsx).
Para empezar a usar el paquete xlsx, primero deberás de instalar el paquete usando el programa RStudio, para ello se ejecuta la siguiente instrucción:
Después de instalar el paquete xlsx, podrás usar todas las funciones disponibles, para ello trataremos de explicar cada una de las principales funciones usadas por xlsx. Para especificar el directorio de trabajo para R pueda manipular los archivos de Excel, por ejemplo para especificar la unidad c: deberá de ejecutar la siguiente instrucción en R: setwd(path.expand(“c:") )
Para leer el contenido de hojas de MS Excel podrás usar las funciones read.xlsx() y read.xlsx2(), el contenido de cada hoja se mostrará en un data.frame. La diferencia entre ambas funciones es: Read.xlsx(): Preserva los tipos de datos contenidos en la hoja de Excel. Read.xlsx2(): Se usa para leer hojas de Excel con mucha información. Figura 2: Lectura de archivo xlsx
Las funciones write.xlsx() y write.xlsx2(), se usan para exportar datos del lenguaje R a una hoja de trabajo de Ms Excel. La forma de llamar estas funciones son: write.xlsx(x, file, sheetName=“Sheet1”, col.names=TRUE, row.names=TRUE, append=FALSE) write.xlsx2(x, file, sheetName=“Sheet1”, col.names=TRUE, row.names=TRUE, append=FALSE) Los parámetros que usa la función es: . x: Bloque de datos a escribir en el libro de Excel. . file: Nombre del archivo . sheetName : Nombre de la hoja. . col.names, row.names : Especifica si los nombre de las columnas y filas se escribirán en el archivo. . append: Especifica si el bloque de datos se agregara a un archive existente.
Figura 3. Escribir en un archivo xls
Se escribe en un nuevo archivo de Excel el data.frame(bloque de datos) leído en la figura anterior.
Figura 4. Contenido del archivo de Excel
Para insertar múltiples hojas de Excel en un mismo libro de trabajo deberá de usar el siguiente ejemplo en R:
Figura 5. Insertar múltiples hojas en libro de Excel
Para este ejemplo deberá de copiar y pegar el siguiente código en RStudio y ejecutarlo: ###Crear un nuevo libro de trabajo, con extension xlsx wb<-createWorkbook(type=“xlsx”)
TITLE_STYLE <- CellStyle(wb)+ Font(wb, heightInPoints=16, color=“blue”, isBold=TRUE, underline=1) SUB_TITLE_STYLE <- CellStyle(wb) + Font(wb, heightInPoints=14, isItalic=TRUE, isBold=FALSE)
TABLE_ROWNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) TABLE_COLNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) + Alignment(wrapText=TRUE, horizontal=“ALIGN_CENTER”) + Border(color=“black”, position=c(“TOP”, “BOTTOM”), pen=c(“BORDER_THIN”, “BORDER_THICK”))
sheet <- createSheet(wb, sheetName = “US State Facts”)
xlsx.addTitle(sheet, rowIndex=1, title=“US State Facts”, titleStyle = TITLE_STYLE)
xlsx.addTitle(sheet, rowIndex=2, title=“Data sets related to the 50 states of USA.”, titleStyle = SUB_TITLE_STYLE) head(state.x77)
addDataFrame(state.x77, sheet, startRow=3, startColumn=1, colnamesStyle = TABLE_COLNAMES_STYLE, rownamesStyle = TABLE_ROWNAMES_STYLE) ### Change column width setColumnWidth(sheet, colIndex=c(1:ncol(state.x77)), colWidth=11)
png(“boxplot.png”, height=800, width=800, res=250, pointsize=8) boxplot(count ~ spray, data = InsectSprays, col = “blue”) dev.off()
sheet <-createSheet(wb, sheetName = “boxplot”) # Add a title to the sheet xlsx.addTitle(sheet, rowIndex=1, title=“Box plot using InsectSprays data”, titleStyle = TITLE_STYLE)
addPicture(“boxplot.png”, sheet, scale = 1, startRow = 4, startColumn = 1) ### Remove the plot from the disk res<-file.remove(“boxplot.png”)
saveWorkbook(wb, “r-xlsx-report-example.xlsx”)
A continuación se muestra el resultado del script ejecutado en Rstudio
Figura 6. Tabla con formato de celdas creada por el paquete xlsx()
Figura 7. Grafico creado por el paquete xlsx()