Objetivo:

Aprender el uso de Open xlsx con R analizando datos estadísticos del INEGI.

Introducción:

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.

¿Qué es R, y Open xlsx?

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.

Instalación de Openxlsx en Rstudio

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

Obtención de datos de un archivo de Excel

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=.

Antecedentes:

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

GAMA DE PRODUCTOS Y SERVICIOS

Análisis y presentación de datos

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)

Diagrama de Asociación

#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)

Diagrama de Espina o Spine Plot

#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)

#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

# 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)

Diagramas avanzados con ggplot2

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'

Gráfica de Pie

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")

Conclusión

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.

Referencias

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)

5 https://cran.rproject.org/ (https://cran.rproject.org/)