1. Presentación

El presente manual pretende ser una guía práctica para el uso del paquete openxlsx del programa R, dirigido a todas aquellas personas que deseen usar y explotar datos de Excel, pero con las funcionalidades y ventajas que permite el programa estadístico R, para aplicarlo en su área de conocimiento.

  1. Introducción

Una de las ventajas de R es que permite instalar diversos paquetes con funcionalidades distintas que extienden la configuración básica del programa.

Entre los paquetes más útiles para la actividad laboral que realizamos se encuentra Open xlsx.

Openxlsx permite escribir, editar, diseñar, manipular e importar datos de archivos Excel .xlsx y representarlos gráficamente.

A diferencia de otros paquetes que ya estaban previstos en R para importar datos y archivos de Excel, el paquete Openxlsx simplifica aún más el proceso de utilizar y explotar datos de Excel desde R ya que permite acceder a dichas funcionalidades sin que sea necesario utilizar Java.

A través de openxlsx es posible analizar variables cualitativas y cuantitativas y dentro de las cuantitativas, analizar numéricas y categóricas.

Asimismo es posible utilizar series de datos que provengan de un archivo en Excel propio o bien desde algún sitio en internet.

  1. Cómo instalar el paquete openxlsx

I. Desde R Studio es muy sencillo instalar el paquete openxlsx:

  1. Abrir la pestaña “Packages”. Se encuentra en la ventana inferior derecha que incluye Files-Plots-Packages-Help.
  2. Seleccionar el botón “install”.
  3. Escribir en la ventana de búsqueda el nombre del paquete “openxlsx”
  4. Se sugiere seleccionar que se incluyan las dependencias, a fin de que cualquier paquete necesario para utilizar el paquete openxlsx también pueda descargarse.
  5. Seleccionar la opción “install”

Nota: no debe olvidarse que una vez que esté instalado el paquete openxlsx, para que el mismo corra en el archivo de que se trate, debe escribirse el comando library.

Nota: debido a su diseño y fácil manejo, es altamente recomendable trabajar con R Studio, ya que cuenta con una apariencia amigable y funcionalidades cuya identificación resulta sencilla.

Nota: al igual que R y R Studio, paquetes como open.xlsx son open source, es decir pueden descargarse y explotarse de manera gratuita.

  1. De no contar con R Studio, se puede instalar desde R. El paquete open.xlsx requiere una aplicación Zip que está disponible para R. Puede depender del sistema operativo del usuario, pero en general, en su versión estable, el paquete puede obtenerse en R desde CRAN, a través de: install.packages(“openxlsx”, dependencies=TRUE).
  1. Principales comandos

Entre los principales comandos que pueden utilizarse para trabajar con datos de Excel a través del paquete openxlsx se encuentran los siguientes:

read.xlsx: Permite leer datos obtenidos de un archivo o libro de Excel y convertirlo en un objeto de R. readWorkbook: Permite leer un archivo de Excel.

Sheets: permite designar o editar el nombre de las hojas del archivo en Excel.

Write.xlxs: Permite escribir datos, desde R, en un archivo xlsx.

WriteComment: Permite escribir comentarios en la celdas de un archivo en Excel.

NA.omit: Permite eliminar los valores identificados con N/A, es decir aquellos que ya han sido identificados como valores faltantes.

  1. Datos faltantes

Al realizar análisis estadístico puede ocurrir que existan muestras con datos perdidos, faltantes o incompletos, es decir variables no obtenidas para algunos de los casos o datos que no han podido observarse. Si no se da un tratamiento estadístico adecuado a este tipo de datos, pueden generarse análisis y resultados incorrectos.

A través del paquete openxlsx es posible tomar en cuenta los datos faltantes sin alterar los resultados. En el apartado correspondiente al ejercicio práctico se mostrará cómo realizarlo.

  1. Ejercicio práctico

Para efectos del presente manual, utilizamos una serie de datos obtenidos del Banco Mundial.

  1. Se guarda un archivo de Excel (terminación xls) en el directorio en el que se encuentran nuestros archivos de R.
  2. En este caso, se guardó un archivo (libro) de excel que contiene 4 hojas, siendo las hojas 1 y 3 que contienen los siguientes datos:

Hoja 1. Datalife Variables: tiempo. Es el año de consulta
tiempo Code. Es el año de consulta
país Name. Es el nombre del país
país Code. Es el código del país Government expenditure on education, total (% of GDP) Health expenditure, public (% of GDP) Life expectancy at birth, male (years) Life expectancy at birth, female (years)

Hoja 3. Datarural tiempo. Es el año de consulta tiempo Code. Es el año de consulta país Name. Es el nombre del país país Code. Es el código del país Government expenditure on education, total (% of GDP) Health expenditure, public (% of GDP) Rural population, male (% of total) Rural population, female (% of total)

Los archivos se obtuvieron de la página de internet del Banco Mundial (http://databank.bancomundial.org/data/reports.aspx?source=estad%C3%ADsticas-sobre-g%C3%A9nero#) en el cual se hizo la selección de las variables contenidas para generar las bases de datos.

#LLAMAR AL PAQUETE OPENXLSX
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 3.4.2
#LEE EL LIBRO DE EXCEL EN LA HOJA 1
life<-read.xlsx("DataBM.xlsx", sheet=1)

#GENERA UNA MUESTRA DE LOS DATOS TRAIDOS DE EXCEL
#colNAMES=False. INCLUYE ENCABEZADOS DE COLUMNAS
#rows. SE INDICA EL RANGO DE FILAS QUE SE QUIEREN MOSTRAR
#cols. SE INDICA EL RANGO DE COLUMNAS QUE SE QUIEREN MOSTRAR
muestra<-readWorkbook("DataBM.xlsx", sheet = 1, colNames = FALSE, rows = 2:6, cols = 2:5)

#CON PRINT MUESTRA EL RESULTADO DE LA ULTIMA ACCION EN LA BASE DE DATOS
print(muestra)
##       X1             X2  X3  X4
## 1 YR2010    Afghanistan AFG 3.5
## 2 YR2010        Albania ALB  NA
## 3 YR2010        Algeria DZA  NA
## 4 YR2010 American Samoa ASM  NA
## 5 YR2010        Andorra AND 3.1
#SI GENERAMOS LA MUESTRA CON colNAMES=TRUE MANTIENE LA PRIMERA FILA SELECCIONADA COMO ENCABEZADO
muestra<-readWorkbook("DataBM.xlsx", sheet = 1, colNames = TRUE, rows = 1:6, cols = 2:6)
print(muestra)
##   TIEMPOCODE           PAIS PCODE GEE HEP
## 1     YR2010    Afghanistan   AFG 3.5 2.9
## 2     YR2010        Albania   ALB  NA 2.5
## 3     YR2010        Algeria   DZA  NA 3.6
## 4     YR2010 American Samoa   ASM  NA  NA
## 5     YR2010        Andorra   AND 3.1 6.2
#EL COMANDO na.omit QUITA DEL OBJETO EN R LAS FILAS QUE NO TIENEN DATOS (NA)
#Y LO ASIGNA A UN NUEVO OBJETO datalife
datalife<-na.omit(muestra)
print(datalife)
##   TIEMPOCODE        PAIS PCODE GEE HEP
## 1     YR2010 Afghanistan   AFG 3.5 2.9
## 5     YR2010     Andorra   AND 3.1 6.2
#GENERAMOS UN NUEVO OBJETO CON MUESTRA DE DATOS
muestrita<-readWorkbook("DataBM.xlsx", sheet = 1, colNames = TRUE, rows = 1:51, cols = 2:8)
print(muestrita)
##    TIEMPOCODE                           PAIS PCODE GEE HEP  LEM  LEF
## 1      YR2010                    Afghanistan   AFG 3.5 2.9 60.1 62.5
## 2      YR2010                        Albania   ALB  NA 2.5 74.4 79.2
## 3      YR2010                        Algeria   DZA  NA 3.6 73.5 75.9
## 4      YR2010                 American Samoa   ASM  NA  NA   NA   NA
## 5      YR2010                        Andorra   AND 3.1 6.2   NA   NA
## 6      YR2010                         Angola   AGO 3.5 2.1 55.5 60.9
## 7      YR2010            Antigua and Barbuda   ATG  NA 3.9 72.9 77.8
## 8      YR2010                     Arab World   ARB  NA 2.5 68.3 71.9
## 9      YR2010                      Argentina   ARG 5.0 4.2 71.7 79.4
## 10     YR2010                        Armenia   ARM 3.2 1.9 70.0 76.4
## 11     YR2010                          Aruba   ABW 6.7  NA 72.5 77.4
## 12     YR2010                      Australia   AUS 5.6 6.1 79.5 84.0
## 13     YR2010                        Austria   AUT 5.7 8.4 77.8 83.5
## 14     YR2010                     Azerbaijan   AZE 2.8 1.2 67.9 74.1
## 15     YR2010                   Bahamas, The   BHS  NA 3.5 71.6 77.7
## 16     YR2010                        Bahrain   BHR  NA 2.6 75.3 77.1
## 17     YR2010                     Bangladesh   BGD  NA 1.1 69.0 71.5
## 18     YR2010                       Barbados   BRB 5.9 4.0 72.5 77.3
## 19     YR2010                        Belarus   BLR 5.4 4.3 64.6 76.5
## 20     YR2010                        Belgium   BEL 6.4 7.9 77.5 83.0
## 21     YR2010                         Belize   BLZ 6.6 3.9 67.1 72.5
## 22     YR2010                          Benin   BEN 5.0 2.7 57.9 60.7
## 23     YR2010                        Bermuda   BMU 2.6  NA 76.6 82.1
## 24     YR2010                         Bhutan   BTN 4.0 4.5 67.6 67.9
## 25     YR2010                        Bolivia   BOL 7.6 3.7 64.1 68.8
## 26     YR2010         Bosnia and Herzegovina   BIH  NA 6.8 73.3 78.4
## 27     YR2010                       Botswana   BWA  NA 3.5 57.2 62.5
## 28     YR2010                         Brazil   BRA 5.6 3.8 70.1 77.6
## 29     YR2010         British Virgin Islands   VGB 4.4  NA   NA   NA
## 30     YR2010              Brunei Darussalam   BRN 2.0 2.5 75.1 78.4
## 31     YR2010                       Bulgaria   BGR 3.9 4.0 70.0 77.2
## 32     YR2010                   Burkina Faso   BFA 3.9 4.0 56.4 57.6
## 33     YR2010                        Burundi   BDI 6.8 5.5 53.1 56.7
## 34     YR2010                     Cabo Verde   CPV 5.6 3.4 70.0 73.6
## 35     YR2010                       Cambodia   KHM 1.5 1.4 64.3 68.6
## 36     YR2010                       Cameroon   CMR 3.3 1.5 54.3 56.6
## 37     YR2010                         Canada   CAN 5.4 7.9 79.1 83.4
## 38     YR2010         Caribbean small states   CSS 6.3 3.3 69.5 75.1
## 39     YR2010                 Cayman Islands   CYM  NA  NA   NA   NA
## 40     YR2010       Central African Republic   CAF 1.2 2.0 46.1 49.1
## 41     YR2010 Central Europe and the Baltics   CEB 4.8 5.3 71.5 79.3
## 42     YR2010                           Chad   TCD 2.0 1.2 49.3 51.2
## 43     YR2010                Channel Islands   CHI  NA  NA 78.1 82.1
## 44     YR2010                          Chile   CHL 4.2 3.3 75.7 81.0
## 45     YR2010                          China   CHN  NA 2.7 73.8 76.8
## 46     YR2010                       Colombia   COL 4.8 5.0 69.7 77.0
## 47     YR2010                        Comoros   COM  NA 1.5 60.3 63.5
## 48     YR2010               Congo, Dem. Rep.   COD 1.6 1.1 55.5 58.3
## 49     YR2010                    Congo, Rep.   COG 6.2 1.4 59.1 61.9
## 50     YR2010                     Costa Rica   CRI 6.6 7.1 76.3 81.2
#QUITANDO LAS FILAS CON NA
datamuestrita<-na.omit(muestrita)
print(datamuestrita)
##    TIEMPOCODE                           PAIS PCODE GEE HEP  LEM  LEF
## 1      YR2010                    Afghanistan   AFG 3.5 2.9 60.1 62.5
## 6      YR2010                         Angola   AGO 3.5 2.1 55.5 60.9
## 9      YR2010                      Argentina   ARG 5.0 4.2 71.7 79.4
## 10     YR2010                        Armenia   ARM 3.2 1.9 70.0 76.4
## 12     YR2010                      Australia   AUS 5.6 6.1 79.5 84.0
## 13     YR2010                        Austria   AUT 5.7 8.4 77.8 83.5
## 14     YR2010                     Azerbaijan   AZE 2.8 1.2 67.9 74.1
## 18     YR2010                       Barbados   BRB 5.9 4.0 72.5 77.3
## 19     YR2010                        Belarus   BLR 5.4 4.3 64.6 76.5
## 20     YR2010                        Belgium   BEL 6.4 7.9 77.5 83.0
## 21     YR2010                         Belize   BLZ 6.6 3.9 67.1 72.5
## 22     YR2010                          Benin   BEN 5.0 2.7 57.9 60.7
## 24     YR2010                         Bhutan   BTN 4.0 4.5 67.6 67.9
## 25     YR2010                        Bolivia   BOL 7.6 3.7 64.1 68.8
## 28     YR2010                         Brazil   BRA 5.6 3.8 70.1 77.6
## 30     YR2010              Brunei Darussalam   BRN 2.0 2.5 75.1 78.4
## 31     YR2010                       Bulgaria   BGR 3.9 4.0 70.0 77.2
## 32     YR2010                   Burkina Faso   BFA 3.9 4.0 56.4 57.6
## 33     YR2010                        Burundi   BDI 6.8 5.5 53.1 56.7
## 34     YR2010                     Cabo Verde   CPV 5.6 3.4 70.0 73.6
## 35     YR2010                       Cambodia   KHM 1.5 1.4 64.3 68.6
## 36     YR2010                       Cameroon   CMR 3.3 1.5 54.3 56.6
## 37     YR2010                         Canada   CAN 5.4 7.9 79.1 83.4
## 38     YR2010         Caribbean small states   CSS 6.3 3.3 69.5 75.1
## 40     YR2010       Central African Republic   CAF 1.2 2.0 46.1 49.1
## 41     YR2010 Central Europe and the Baltics   CEB 4.8 5.3 71.5 79.3
## 42     YR2010                           Chad   TCD 2.0 1.2 49.3 51.2
## 44     YR2010                          Chile   CHL 4.2 3.3 75.7 81.0
## 46     YR2010                       Colombia   COL 4.8 5.0 69.7 77.0
## 48     YR2010               Congo, Dem. Rep.   COD 1.6 1.1 55.5 58.3
## 49     YR2010                    Congo, Rep.   COG 6.2 1.4 59.1 61.9
## 50     YR2010                     Costa Rica   CRI 6.6 7.1 76.3 81.2
##ABRIENDO EL PAQUETE GGPLOT2

library(ggplot2)

#GENERANDO LA GRÁFICA MÁS SIMPLE
qplot(GEE, LEM, data=datamuestrita)

#GRAFICA CON TITULO Y NOMBRE DE EJES
ggplot(data = datamuestrita,aes(x=GEE,y=LEM))+geom_point()+labs(title="Gasto en educación/Esperanza de vida para hombres",x="Gasto en educación/porcentaje PIB",y="Esperanza de vida para hombres/años")

#VINCULAMOS UNA TERCERA VARIABLE QUE ES EL NOMBRE DEL PAIS
ggplot(data = datamuestrita,aes(x=GEE,y=LEM))+geom_point(aes(colour=PAIS))+labs(title="Gasto en educación/Esperanza de vida para hombres",x="Gasto en educación/porcentaje PIB",y="Esperanza de vida para hombres/años")

#ASIGNAMOS LA GRAFICA ANTERIOR A UN OBJETO R LLAMADO graf1
graf1<-ggplot(data = datamuestrita,aes(x=GEE,y=LEM))+geom_point(aes(colour=PAIS))+labs(title="Gasto en educación/Esperanza de vida para hombres",x="Gasto en educación/porcentaje PIB",y="Esperanza de vida para hombres/años")

#PROBAMOS LA SALIDA
graf1

#A CADA PUNTO EN LA GRAFICA SE INCLUYE UNA ETIQUETA CON EL NOMBRE DEL PAIS
#UTILIZAMOS EL COMANDO label=PAIS
graf1<-ggplot(data = datamuestrita,aes(x=GEE,y=LEM,label=PAIS))+geom_point(aes(colour=PAIS))+geom_text(vjust=1.5)+labs(title="Gasto en educación/Esperanza de vida para hombres",x="Gasto en educación/porcentaje PIB",y="Esperanza de vida para hombres/años")
graf1

#CAMBIAMOS ELEMENTOS DE EJES A LA GRAFICA 1 Y LA ASIGNAMOS A UN OBJETO GRAF2
graf2<-graf1+theme(axis.text.y = element_text(face = "italic",colour = "red",size=rel(1.2)))+theme(plot.background = element_rect(fill = "lightblue"))
graf2

  1. Referencias:

https://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf

https://www.rdocumentation.org/packages/openxlsx/versions/4.0.17

https://cran.r-project.org/web/packages/openxlsx/vignettes/formatting.pdf

https://www.rdocumentation.org/packages/openxlsx/versions/4.0.17/topics/read.xlsx

http://blog.urcera.com/wordpress/?p=242