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.
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.
I. Desde R Studio es muy sencillo instalar el paquete openxlsx:
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.
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.
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.
Para efectos del presente manual, utilizamos una serie de datos obtenidos del Banco Mundial.
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
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