Esta publicaci??n esta dirigida a los usuarios de RSTUDIO como guia de consulta rapida del paquete XLSX para importar y exportar archivos de Excel utilizando R.

“R”, tambien conocido como ???GNU S???, es un entorno y un lenguaje para el calculo estadistico y la generacion de graficos.

El paquete XLSX permite leer, escribir y modificar archivos de Excel, independientemente de la versi??n que sea. Es una herramienta basada en los paquetes rJava y xlsxjars, mismos que funcionan tanto para Windows, Mac como Linux.

Para instalar este paquete lo podemos realizar desde la consola de R “Packages” con la opcion del menu Install. Si la configuracion del repositorio es correcta, se descargara el paquete asi como sus dependencias, quedando instalados y listos para usar. Para llamar un paquete ya descargado se manda llamar mediante el comando que se describe a continuacion:

library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
library(rJava)
library(xlsxjars)
  1. LEYENDO DATOS DESDE UN ARCHIVO DE EXCEL Importar datos desde un archivo, significa leer bases de datos desde un archivo de Excel para lo cual utilizaremos el comando:
rendimiento.csv <- read.csv("REND2013.csv", header = TRUE)
head(rendimiento.csv)
##   SERV ene.13 feb.13 mar.13 abr.13 may.13 jun.13 jul.13 ago.13 sep.13
## 1  PRI   3.51   3.50   3.41   3.45   3.40   3.39   3.40   3.28   3.44
## 2  PRI   3.25   3.24   3.26   3.24   3.23   3.19   3.19   3.21   3.11
## 3  INT   3.26   3.24   3.36   2.99   3.11   3.12   3.10   3.17   3.15
## 4  TPE   3.52   3.39   3.41   3.24   3.17   3.11   3.23   3.16   3.10
## 5  TUR   2.78   2.75   2.81   2.70   2.72   2.59   2.61   2.69   2.77
## 6  TUR   5.49   5.38   5.21   5.31   4.95   5.23   4.95   5.05   5.07
##   oct.13 nov.13 dic.13
## 1   3.43   3.40   3.33
## 2   3.14   3.12   3.01
## 3   3.18   3.15   3.21
## 4   3.15   3.22   3.18
## 5   2.78   2.82   2.79
## 6   5.28   5.74   6.01

Como se muestra en la tabla arriba es como deben lucir los datos tras la lectura. El argumeto header=T es equivalente a header=TRUE, por lo que se pueden usar de forma indistinta.

Para conocer la clase de cada variable aplicamos el comando sapply:

sapply(rendimiento.csv, class)
##      SERV    ene.13    feb.13    mar.13    abr.13    may.13    jun.13 
##  "factor" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric" 
##    jul.13    ago.13    sep.13    oct.13    nov.13    dic.13 
## "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"

Si lo que se desea es una s??ntesis estadistica de las principales variables de nuestra tabla entonces usamos:

summary(rendimiento.csv)
##   SERV       ene.13          feb.13          mar.13          abr.13     
##  DIE:2   Min.   :2.680   Min.   :2.380   Min.   :2.390   Min.   :2.700  
##  INT:6   1st Qu.:3.083   1st Qu.:3.025   1st Qu.:2.947   1st Qu.:2.895  
##  PRI:3   Median :3.220   Median :3.230   Median :3.310   Median :2.990  
##  TPE:2   Mean   :3.350   Mean   :3.311   Mean   :3.326   Mean   :3.217  
##  TUR:5   3rd Qu.:3.475   3rd Qu.:3.385   3rd Qu.:3.410   3rd Qu.:3.295  
##          Max.   :5.490   Max.   :5.380   Max.   :5.210   Max.   :5.310  
##      may.13          jun.13          jul.13          ago.13     
##  Min.   :2.440   Min.   :2.590   Min.   :2.320   Min.   :2.400  
##  1st Qu.:2.945   1st Qu.:2.980   1st Qu.:2.938   1st Qu.:2.913  
##  Median :3.110   Median :3.120   Median :3.075   Median :3.090  
##  Mean   :3.214   Mean   :3.268   Mean   :3.176   Mean   :3.168  
##  3rd Qu.:3.305   3rd Qu.:3.303   3rd Qu.:3.275   3rd Qu.:3.263  
##  Max.   :4.950   Max.   :5.230   Max.   :4.950   Max.   :5.050  
##      sep.13          oct.13          nov.13          dic.13     
##  Min.   :2.760   Min.   :2.370   Min.   :2.090   Min.   :2.570  
##  1st Qu.:2.960   1st Qu.:2.902   1st Qu.:2.862   1st Qu.:2.897  
##  Median :3.095   Median :3.090   Median :3.085   Median :3.070  
##  Mean   :3.233   Mean   :3.215   Mean   :3.198   Mean   :3.276  
##  3rd Qu.:3.263   3rd Qu.:3.255   3rd Qu.:3.295   3rd Qu.:3.277  
##  Max.   :5.070   Max.   :5.280   Max.   :5.740   Max.   :6.010

La instruccion View(datos.csv) muestra la base de datos completa, esta forma de presentar los datos es muy parecida a una hoja de calculo de excel.

View(rendimiento.csv)

Para importar directamente desde excel o exportar a excel en su respectivo formato .xls se puede realizar de diversas formas la primera es como a continuaci??n se describe:

library(xlsx)
combustible <- read.xlsx("REND2013.xls",sheetName ="Historico RC y ABC",header=TRUE,as.data.frame=TRUE)
attach(combustible)       
View(combustible)

Para leer el contenido de hojas de Excel en XLSX podr??s usar las funciones read.xlsx() y read.xlsx2(), 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.

Tambien se puede leer con el paquete gdata, siendo m??s facil que el anterior, quedando asi:

library(xlsx)
read.xlsx("REND2013.xls",sheetName = "Historico RC y ABC")
##    SERV X41275 X41306 X41334 X41365 X41395 X41426 X41456 X41487 X41518
## 1   PRI      7      8      4      3      6      9      7      2      6
## 2   PRI     10      9      5     10      3      9      7      3      5
## 3   INT     10      6      9      7      7      3      8      2      4
## 4   TPE      4      3      6      8      1      8      3      9     10
## 5   TUR      9      9      7      9      9      3      6      3      4
## 6   TUR     10      4      1      6      1      9      3      9      1
## 7   PRI     10      3      4      8      2     10      6      4      8
## 8   DIE     10      3      7      6      2      8      8      3      3
## 9   DIE      5      8      3      6      7      9     10     10      1
## 10  INT      8      9      1      4      2      8      1     10     10
## 11  INT      3      8      3      1      5      3      8      9      4
## 12  INT     10      1      4      3     10      1      2      9      4
## 13  TPE      4     10      1      1      1      2     10      2      6
## 14  TUR      7      5      1      7      5      2      7      8      7
## 15  TUR      8      7      3      3      9      3      9      4      3
## 16  INT      2      1     10      3      7      5      9      4      1
## 17  INT      3      6      6      7      4     10      3      6      8
## 18  TUR      4      4      9      3      8     10      9      8      3
## 19 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 20 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 21 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 22 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 23 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 24 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 25 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 26 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 27 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 28 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 29 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 30 <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
## 31                                                                    
## 32                                                                    
## 33                                                                    
## 34                                                                    
## 35                                                                    
## 36                                                                    
## 37                                                                    
## 38                                                                    
## 39                                                                    
## 40                                                                    
##    X41548 X41579 X41609
## 1       6      1      8
## 2       4      3      3
## 3       9      2      6
## 4       5      5      4
## 5       7      8      6
## 6       7      5      1
## 7       8     10      8
## 8       7      6     10
## 9       1      4      4
## 10      5      6      9
## 11      3      7      2
## 12      5      7      1
## 13      8      5      2
## 14      1      2      2
## 15      5      8      6
## 16      6      1      4
## 17      6      3      6
## 18      7      1     10
## 19   <NA>   <NA>   <NA>
## 20   <NA>   <NA>   <NA>
## 21   <NA>   <NA>   <NA>
## 22   <NA>   <NA>   <NA>
## 23   <NA>   <NA>   <NA>
## 24   <NA>   <NA>   <NA>
## 25   <NA>   <NA>   <NA>
## 26   <NA>   <NA>   <NA>
## 27   <NA>   <NA>   <NA>
## 28   <NA>   <NA>   <NA>
## 29   <NA>   <NA>   <NA>
## 30   <NA>   <NA>   <NA>
## 31                     
## 32                     
## 33                     
## 34                     
## 35                     
## 36                     
## 37                     
## 38                     
## 39                     
## 40
  1. INSERTANDO GRAFICOS CON XLSX

El lenguaje R puede gestionar diferentes gr??ficas, el comando “plot” es el mas utilizado con este paquete y permite generar toda clase de graficos conforme al tipo de informaci??n a presentar.

library(ggplot2)
Diesel <- loadWorkbook("REND2013.xls")
png("Grafica.png", height=800, width=2000, res=250, pointsize=8)          
qplot(X41275)   
dev.off()
## png 
##   2
wb <- loadWorkbook( "REND2013.xls")
sheet <-createSheet(wb, sheetName = "Histograma.Rendimiento")
addPicture("Grafica.png", sheet, scale = 1, startRow = 4,startColumn = 1)
saveWorkbook(wb,"REND2013.xls")
qplot(X41275)  

  1. ESCRIBIENDO EN UN ARCHIVO DE EXCEL

Los comandos write.xlsx() y write.xlsx2(), se usan para exportar directamente de tu script en RStudio a una hoja de trabajo en Excel. La estrcutura de estos comando es: 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 el comando son: 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 los nombres de las columnas y filas se escribir??n en el archivo. append: Especifica si el bloque de datos se agregar?? a un archivo existente.

library(xlsx)
write.xlsx(cars, "REND2013A.xlsx")      
read.xlsx("REND2013A.xlsx", sheetName = "Sheet1")
##    NA. speed dist
## 1    1     4    2
## 2    2     4   10
## 3    3     7    4
## 4    4     7   22
## 5    5     8   16
## 6    6     9   10
## 7    7    10   18
## 8    8    10   26
## 9    9    10   34
## 10  10    11   17
## 11  11    11   28
## 12  12    12   14
## 13  13    12   20
## 14  14    12   24
## 15  15    12   28
## 16  16    13   26
## 17  17    13   34
## 18  18    13   34
## 19  19    13   46
## 20  20    14   26
## 21  21    14   36
## 22  22    14   60
## 23  23    14   80
## 24  24    15   20
## 25  25    15   26
## 26  26    15   54
## 27  27    16   32
## 28  28    16   40
## 29  29    17   32
## 30  30    17   40
## 31  31    17   50
## 32  32    18   42
## 33  33    18   56
## 34  34    18   76
## 35  35    18   84
## 36  36    19   36
## 37  37    19   46
## 38  38    19   68
## 39  39    20   32
## 40  40    20   48
## 41  41    20   52
## 42  42    20   56
## 43  43    20   64
## 44  44    22   66
## 45  45    23   54
## 46  46    24   70
## 47  47    24   92
## 48  48    24   93
## 49  49    24  120
## 50  50    25   85
  1. ??NECESITAS MAS HOJAS DE C??LCULO EN XLSX?

Se anexa ejemplo donde se muestra como colocar dos hojas de c??lculo nuevas al libro.

wb <- loadWorkbook( "REND2013.xls")
sheet1 <- createSheet(wb, "REND1")
saveWorkbook(wb,"REND2013.xls")

wb <- loadWorkbook( "REND2013.xls")
sheet2 <- createSheet(wb, "REND2")
saveWorkbook(wb,"REND2013.xls")

Bibliografia https://cran.r-project.org/web/packages/xlsx/xlsx.pdf https://rstudio-pubs-static.s3.amazonaws.com/253396_32e96fa4cb1542e39e1f33efab39bbae.html https://www.r-bloggers.com/importexport-data-to-and-from-xlsx-files/ http://www.ub.edu/stat/docencia/EADB/Curso%20basico%20de%20R-bn.pdf