Aprender el uso de Open xlsx con R analizando datos estadísticos del INEGI.
Este documento permitirá entender el uso de open xlsx dentro de R; para lo cual se usarán datos proporcionados por el Instituto Nacional de Estadística y Geografía (INEGI) de importaciones a México de máquinas de ensayos de materiales a través de la fracción arancelaria 902410 en el periodo 2010-2016.
Las máquinas de ensayos de materiales se utilizan para realizar pruebas técnicas para las diferentes industrias como la automotriz, aeroespacial, médica y alimentaria, entre otras. Este tipo de pruebas normalmente son destructivas y permiten evaluar la resistencia de los materiales como enlongación, indentación y pruebas de dureza, de rompimiento, entre muchas más; lo cual permite a los fabricantes tener la certeza de la calidad y el tiempo de vida de los materiales con los que se realizan procesos productivos para las cadenas de valor garantizando seguridad, calidad y confianza en los productos que se ofertan al consumidor final, esta es una tecnología alemana y proviene de la industria 4.0 mejor conocida como la cuarta revolución industrial.
Para poder analizar y comprender el desarrollo de este trabajo, es necesario definir conceptos básicos y que son parte importante para su entendimiento.
R es un sistema, con su propio lenguaje de programación, para realizar análisis estadísticos y gráficos creado por Ross Ihaka y Robert Gentleman. Es de acceso abierto, se distribuye gratuitamente y está disponible en diferentes formas según el equipo de cómputo.
Los archivos necesarios para instalar R, se distribuyen desde el sitio de internet Comprehensive R Archive Network (CRAN), su dirección de internet es la siguiente: https://cran.rproject.org/ (https://cran.rproject.org/)
Se trabajará en Rstudio.
RStudio tiene la misión de proporcionar el entorno informático estadístico R. Permite un análisis y desarrollo para que cualquiera pueda analizar los datos con R.
Dentro de R tendremos que utilizar diversos paquetes que nos permitirán manipular, leer y graficar bases de datos de acuerdo a los comandos que ejecutemos; para efectos de este manual, nos centraremos en el uso de openxlsx.
Openxlsx, es un paquete dentro de R, que nos permite leer, escribir y editar archivos de Excel (xlsx). Simplifica la creación de archivos .xlsx proporcionando una interfaz de alto nivel para escribir, diseñar y editar hojas de cálculo. Mediante el uso de ‘Rcpp’, los tiempos de lectura / escritura son comparables a los paquetes ‘xlsx’ y ‘XLConnect’ con el beneficio a?adido de eliminar la dependencia de Java.
Para llevar a cabo la instalación de Open xlsx, ésta se puede desarrollar de dos formas:
Forma 1 Instalación del paquete Open xlsx en Rstudio, a través de los comandos:
install.packages (“openxlsx”) library (openxlsx) require (openxlsx
library (openxlsx)
## Warning: package 'openxlsx' was built under R version 3.4.2
require (openxlsx)
Forma 2
Otra forma de instalarlo a través de RStudio, es en el apartado de “Packages”, en su opción “Install”, y refiriendo el nombre del paquete openxlsx.
Posterior a su carga, se debe visualizar en el listado de Paquetes el nombre del paquete openxlsx.
Del mismo modo para el desarrollo de este proyecto, utilizaremos paquetes adicionales los cuales son los siguientes:
ggplot openxlsx gridExtra
Estos paquetes conforman nuestra “library”, la cual llamaremos cuando deseemos utilizar el paquete correspondiente.
library (openxlsx)
library (ggplot2)
library (gridExtra)
## Warning: package 'gridExtra' was built under R version 3.4.2
Para abrir una base de datos de excel, en Rstudio, primero debemos estar seguros que ya hayamos seleccionado el paquete openxlsx, posterior a ello, le vamos a generar una función para leer la base de datos que deseemos trabajar, para lo cual utilizaremos la función: read.xlsx
Ejemplo:
library(openxlsx) Datos=read.xlsx(“Estadisticas.xlsx”, sheet = “Est1”) Datos
library(openxlsx)
Datos<-read.xlsx("Estadisticas.xlsx", sheet = "Est1")
Datos
## País 2010 2011 2012 2013 2014 2015
## 1 Alemania 6413826 8338674 5268327 6001542 6877744 8731561
## 2 China 1003942 1037813 1464561 1719005 2608477 2999837
## 3 Estados Unidos 19727206 20906715 24725585 24444810 32036144 32495702
## 4 Japón 1940741 2863493 3641370 5530656 4207855 5259365
## 5 Reino Unido 1531881 1937466 1806774 2499505 2089282 2495515
## 2016 Total
## 1 10898433 52530107
## 2 4190042 15023677
## 3 28418286 182754448
## 4 6138521 29582001
## 5 1937215 14297638
Para que el comando se ejecute correctamente, debemos asegurarnos que el sentido de las líneas sea éste /. Así como agregar el nombre del archivo tal cual lo hemos guardado, e incluir el .xlsx al final. Para seleccionar la hoja de Excel que vamos a trabajar de ese archivo, debemos especificarlo indicando su nombre en sheet=. ##Antecedentes: Zwick Roell Group es un proveedor líder mundial de máquinas de ensayo de materiales, fundada en 1920 y con oficinas centrales el Ulm, Alemania.
En este ejemplo, decidimos referenciar a nuestra base de datos como Estadisticas; dentro de la instrucción de nuestro comando, debemos poner la ubicación del archivo, en este caso esta en el disco local de la computadora, en una carpeta creada en el escritorio, llamada MCAA por las siglas del nombre de la materia de “Métodos Cuantitativos Aplicados a la Administración”, en la cual se encuentran todos los archivos que se han trabajado durante el semestre, es por ello que se visualiza la dirección de la forma siguiente:
C:/Users/1/Desktop/MCAA/Estadisticas.xlsx
Para que el comando se ejecute correctamente, debemos asegurarnos que el sentido de las líneas sea éste /. Así como agregar el nombre del archivo tal cual lo hemos guardado, e incluir el .xlsx al final.
Para seleccionar la hoja de Excel que vamos a trabajar de ese archivo, debemos especificarlo indicando su nombre en sheet=.
Oficinas centrales: Ulm, Alemania
Fundación: 1920
Zwick es proveedor líder mundial de máquinas de ensayo de materiales. Empresas con actividad en más de 20 sectores utilizan en sus departamentos de I+D y de Aseguramiento de calidad máquinas de ensayos de materiales y sistemas de ensayo universales de Zwick. Además de los ensayos estándar -tracción, compresión y flexión-, con las máquinas de ensayos de materiales de Zwick, también se pueden realizar ensayos multiaxiales, tales como ensayos de tracción biaxiales y ensayos de torsión.
Empresas con actividad en más de 20 sectores utilizan sus departamentos de I+D y de aseguramiento de calidad máquinas de ensayos de materiales y sistemas de ensayo universales de Zwick. Además de los ensayos estándar -tracción, compresión y flexión-, con las máquinas de ensayos de materiales de Zwick, también se pueden realizar ensayos multixiales, tales como ensayos de tracción biaxiales y ensayos de torsión.
Asimismo, Zwick es fabricante líder de máquinas de ensayos de fatiga, durómetros, péndulos de impacto y medidores de índice de fluidez. Entre nuestros productos, también ofrecemos sistemas de ensayo automatizados.
Dr. Jan Stefan Roell chairman of the board Zwick Roell AG
A continuanión se desarrolla el análisis de los datos, partiendo de manera inicial que los datos que tenemos son categóricos y numéricos.
Datos categoricos
Esto se debe a que los resultados de la tabla extraída de INEGI, de la Balanza comercial de Mercancías de México, de acuerdo a las importaciones de la partida9024, de identificaron los países con mayor índice de importación y éstos fueron los siguientes:
-Alemania
-China
-Estados Unidos
-Japón
-Reino Unido
Serie y Punto fijo del Tiempo
Otra clasificación de nuestros datos presentados, es la Serie de Tiempo, ya que ésta abarca información recopilada del año 2010 al 2016, observando las variaciones entre cada paíes desarrollado.
Aunado a ello, también podríamos clasificar nuestros datos en un Punto fijo del tiempo, al enfocarnos en los resultados totales de la tabla.
Presentación de los datos
Derivado que nuestros datos categóricos, utilizaremos el paquete “gridExtra”, para poder representar en una tabla la información a estudiar, para lo cual se deben seguir los pasos siguientes:
library(gridExtra)
TABINEGI <-
as.table(cbind(c(6413826, 1003942, 19727206, 1940741, 1531881),
c(8338674, 1037813, 20906715, 2863493, 1937466),
c(5268327, 1464561, 24725585, 3641370, 1806774),
c(6001542, 1719005, 24444810, 5530656, 2499505),
c(6877744, 2608477, 32036144, 4207855, 2089282),
c(8731561, 2999837, 32495702, 5259365, 2495515),
c(10898433, 4190042, 28418286, 6138521, 1937215)))
dimnames(TABINEGI) <-list(Países=c("Alemania","China", "Estados Unidos", "Japón", "Reino Unido"),Año=c("2010","2011","2012","2013","2014","2015", "2016"))
plot.new()
grid.table(TABINEGI)
TABINEGI
## Año
## Países 2010 2011 2012 2013 2014 2015
## Alemania 6413826 8338674 5268327 6001542 6877744 8731561
## China 1003942 1037813 1464561 1719005 2608477 2999837
## Estados Unidos 19727206 20906715 24725585 24444810 32036144 32495702
## Japón 1940741 2863493 3641370 5530656 4207855 5259365
## Reino Unido 1531881 1937466 1806774 2499505 2089282 2495515
## Año
## Países 2016
## Alemania 10898433
## China 4190042
## Estados Unidos 28418286
## Japón 6138521
## Reino Unido 1937215
title(main="Países con mayor importación de máquinas y aparatos de ensayo", col.main="darkorchid4", sub="Datos de INEGI / Balanza Comercial de Mercancías", col.sub="red", cex.sub=0.9)
#Otra forma de representar los datos, es mediante un diagrama de Asociación, el cual se puede generarsiguiendo los pasos siguientes:
# 1. Necesitamos usa el comando "assocplot", y referir nuestra tabla que hemos trabajado previamente y a la cual denominamos "TABINEGI", para esta representación es necesario la selección de colores, para que se pueda representar las diferencias por varibles.
assocplot(TABINEGI, col=c("cyan1","blue4"))
# 2. Del mismo modo con el comando "title" especificamos las características de nuestro texto en el diagrama.
title(main="Países con mayor importación de máquinas de ensayo", col.main="brown4", sub="Datos INEGI 2016", col.sub="purple4", cex.sub=0.9)
#Otra forma de representar estos datos categóricos, es a través del diagrama de espina o Spine Plot, el cual sepuede realizar ejecutando el comando de "spineplot" y refiriendo nuestra tabla.
# 1. Ejecutar el comando (considerando que previamente, ya construimos nuestra tabla denominada TABINEGI)
spineplot(TABINEGI, col=c("purple1","springgreen"))
# 2. Incluimos los detalles del texto para la interpretación del diagrama
title(main="Países con mayor importación a México", col.main="violetred4", sub="Datos de la partida 9024, INEGI", col.sub="steelblue4", cex.sub=0.9)
#Importación por año (2010-2016)
Datos3<-read.xlsx("Estadisticas.xlsx", sheet = "Est3")
attach(Datos3)
mean(x1);mean(y1);mean(x2);mean(y2);mean(x3);mean(y3);mean(x4);mean(y4);mean(x5);mean(y5)
## [1] 2013
## [1] 7504301
## [1] 2013
## [1] 2146240
## [1] 2013
## [1] 26107778
## [1] 2013
## [1] 4226000
## [1] 2013
## [1] 2042520
sd(x1);sd(y1);sd(x2);sd(y2);sd(x3);sd(y3);sd(x4);sd(y4);sd(x5);sd(y5)
## [1] 2.160247
## [1] 1939160
## [1] 2.160247
## [1] 1176158
## [1] 2.160247
## [1] 5061756
## [1] 2.160247
## [1] 1519247
## [1] 2.160247
## [1] 354654.8
cor(x1,y1);cor(x2,y2);cor(x3,y3);cor(x4,y4);cor(x5,y5)
## [1] 0.6305708
## [1] 0.9594294
## [1] 0.862119
## [1] 0.9116318
## [1] 0.5687823
medias <- c(mean(x1), mean(x2), mean(x3), mean(x4), mean(x5))
Dataset1 <- as.table(cbind(x1,y1))
Dataset2 <- as.table(cbind(x2,y2))
Dataset3 <- as.table(cbind(x3,y3))
Dataset4 <- as.table(cbind(x4,y4))
Dataset5 <- as.table(cbind(x5,y5))
# Loading packages for diplay tables and graphs
#library(OIdata)
library(gridExtra)
# ---- dataset 1 ----
#ALEMANIA
plot.new()
grid.table(Dataset1)
plot(x1,y1, main="Alemania",col="violetred1")
abline(lm(y1~x1),col="violet",lw=2)
# ---- dataset 2 ----
#CHINA
plot.new()
grid.table(Dataset2)
plot(x2,y2, main="China",col="violetred1")
abline(lm(y2~x2),col="slateblue1",lw=2)
# ---- dataset 3 ----
#ESTADOS UNIDOS
plot.new()
grid.table(Dataset3)
plot(x3,y3, main="Estados Unidos",col="violetred1")
abline(lm(y3~x3),col="steelblue4",lw=2)
# ---- dataset 4 ----
#JAPON
plot.new()
grid.table(Dataset4)
plot(x4,y4, main="Japón",col="violetred1")
abline(lm(y4~x4),col="Orange",lw=2)
# ---- dataset 5 ----
#REINO UNIDO
plot.new()
grid.table(Dataset5)
plot(x4,y4, main="Reino Unido",col="violetred1")
abline(lm(y4~x4),col="royalblue3",lw=2)
par(mfrow=c(1, 1))
# Gráfica de Barras
# Resultados del 2016
## 1.- Iniciamos al seleccionar el paquete con el cual decidimos abrir el archivo, en este caso es openxlsx
library(openxlsx)
Datos=read.xlsx("Estadisticas.xlsx", sheet = "Est1")
Datos
## País 2010 2011 2012 2013 2014 2015
## 1 Alemania 6413826 8338674 5268327 6001542 6877744 8731561
## 2 China 1003942 1037813 1464561 1719005 2608477 2999837
## 3 Estados Unidos 19727206 20906715 24725585 24444810 32036144 32495702
## 4 Japón 1940741 2863493 3641370 5530656 4207855 5259365
## 5 Reino Unido 1531881 1937466 1806774 2499505 2089282 2495515
## 2016 Total
## 1 10898433 52530107
## 2 4190042 15023677
## 3 28418286 182754448
## 4 6138521 29582001
## 5 1937215 14297638
## 2.- Una vez que ya contemos con la base de datos, tenemos que introducir el comando attach, para que podamos manipular la información de la base.
attach(Datos)
## 3.- Para visualizar nuestra base de datos a trabajar, utilizamos el comando view
#View(Datos)
## 4.- Vamos a sacar el porcentaje de cada tipo de causa por la cual la población no tuvo servicio celular, con la información proporcionada del 2016
Percent <- Total/sum(Total)*100
Datos <- cbind(Datos,Percent)
Datos
## País 2010 2011 2012 2013 2014 2015
## 1 Alemania 6413826 8338674 5268327 6001542 6877744 8731561
## 2 China 1003942 1037813 1464561 1719005 2608477 2999837
## 3 Estados Unidos 19727206 20906715 24725585 24444810 32036144 32495702
## 4 Japón 1940741 2863493 3641370 5530656 4207855 5259365
## 5 Reino Unido 1531881 1937466 1806774 2499505 2089282 2495515
## 2016 Total Percent
## 1 10898433 52530107 17.855973
## 2 4190042 15023677 5.106831
## 3 28418286 182754448 62.121680
## 4 6138521 29582001 10.055479
## 5 1937215 14297638 4.860037
# Para generar el porcentaje, se tiene que seleccionar la variable a la cual se le va a hacer el cálculo; en este caso seleccionamos la variable de "Personal", y en segundo término damos la instrucción que se calcule el porcentaje al 100% de nuestra base denominada Lectura, de la hoja Datos.
# Calculamos el porcentaje, para poder graficar la información.
## 5.- Gráfica de Barras
# Para elaborar la gráfica de barras, seleccionamos nuestro paquete "ggplot2" y usamos el comando "barplot", para el cual damos las especificaciones de cuales columnas debe considerar, y determinamos el redondeo que deseemos, as? como la asignaci?n del signo de porcentaje "%".
# Para editar la parte visual de nuestra grafica, damos las especificaciones sobre la denominación del título y el eje de x y y; así como la asignació n de los colores que deseamos elegir en nuestra gráfica.
lbls <- paste(País, ": ",round(Percent,2), " %", sep="")
bp <- barplot (Percent, horiz=TRUE, main="Países con mayor importación de máquinas de ensayo", ylab="País", xlab="Total",col=topo.colors(length(round(Percent))))
# Aunado a ello, indicamos las características de nuestro texto en la gráfica, como su tamaño "cex".
text(0, bp, lbls, cex=.8, pos=4)
Alemania
library(ggplot2)
DatosAle<-read.xlsx("Estadisticas.xlsx", sheet = "EstAle")
summary(DatosAle)
## Año Total
## Length:7 Min. : 5268327
## Class :character 1st Qu.: 6207684
## Mode :character Median : 6877744
## Mean : 7504301
## 3rd Qu.: 8535118
## Max. :10898433
qplot(Año, Total, data=DatosAle) + geom_smooth()
## `geom_smooth()` using method = 'loess'
China
library(ggplot2)
DatosChi<-read.xlsx("Estadisticas.xlsx", sheet = "EstChi")
summary(DatosChi)
## Año Total
## Length:7 Min. :1003942
## Class :character 1st Qu.:1251187
## Mode :character Median :1719005
## Mean :2146240
## 3rd Qu.:2804157
## Max. :4190042
qplot(Año, Total, data=DatosChi) + geom_smooth()
## `geom_smooth()` using method = 'loess'
Estados Unidos
library(ggplot2)
DatosEUA<-read.xlsx("Estadisticas.xlsx", sheet = "EstEUA")
summary(DatosEUA)
## Año Total
## Length:7 Min. :19727206
## Class :character 1st Qu.:22675762
## Mode :character Median :24725585
## Mean :26107778
## 3rd Qu.:30227215
## Max. :32495702
qplot(Año, Total, data=DatosEUA) + geom_smooth()
## `geom_smooth()` using method = 'loess'
Japón
library(ggplot2)
DatosJap<-read.xlsx("Estadisticas.xlsx", sheet = "EstJapon")
summary(DatosJap)
## Año Total
## Length:7 Min. :1940741
## Class :character 1st Qu.:3252432
## Mode :character Median :4207855
## Mean :4226000
## 3rd Qu.:5395010
## Max. :6138521
qplot(Año, Total, data=DatosJap) + geom_smooth()
## `geom_smooth()` using method = 'loess'
Reino Unido
library(ggplot2)
DatosRei<-read.xlsx("Estadisticas.xlsx", sheet = "EstRei")
summary(DatosRei)
## Año Total
## Length:7 Min. :1531881
## Class :character 1st Qu.:1871995
## Mode :character Median :1937466
## Mean :2042520
## 3rd Qu.:2292399
## Max. :2499505
qplot(Año, Total, data=DatosRei) + geom_smooth()
## `geom_smooth()` using method = 'loess'
Totales
library(ggplot2)
DatosTotal<-read.xlsx("Estadisticas.xlsx", sheet = "EstTotal")
summary(DatosTotal)
## País Total
## Length:5 Min. : 14297638
## Class :character 1st Qu.: 15023677
## Mode :character Median : 29582001
## Mean : 58837574
## 3rd Qu.: 52530107
## Max. :182754448
qplot(País, Total, data=DatosTotal) + geom_smooth()
## `geom_smooth()` using method = 'loess'
Totales por País
totales <- c(52530107, 15023677, 182754448, 29582001, 14297638)
names(totales) <- c("Alemania", "China", "Estados Unidos", "Japón", "Reino Unido")
pie(totales, col = rainbow(length(names(totales))), main = "Totales por País")
Con este trabajo podemos concluir que los países con mayor importación de máquinas de ensayo son Estados Unidos, Alemania, China, Japón y Reino Unido. Por lo tanto se tiene más demanda de las máquinas de ensayo de materiales de Estados Unidos, por las variables de costo, tiempos de entragas y cernía a México. Considerando que la calidad es mayor en Alemania. Sin embargo, Alemania cuenta con un rango mayor de número de industrias las que llega entre las principales esta automotriz, médica, alimenticia, aeroespacial, entre otras.
1 R para Principiantes; Emmanuel Paradis; Institut des Sciencies de’l Evolution, Universit Montpellier II; France.
2 Josef Cohen and Jeremiah Y. Cohen, Statistics and Data with R, an applied approach through examples.
3 Michael Crawley, The R book.
4 https://es.wikipedia.org/Xwiki/RStudio (https://es.wikipedia.org/Xwiki/RStudio)