-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProyecto1.Rmd
More file actions
335 lines (262 loc) · 12 KB
/
Proyecto1.Rmd
File metadata and controls
335 lines (262 loc) · 12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
---
title: "**Estructuración y visualización de datos**"
author: "Jose Luis Laura Pumaleque"
date: "9/8/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# **Proyecto Opensource**
```{r Url, echo=FALSE,message=FALSE,warning=FALSE }
URL1<-"https://avatars1.githubusercontent.com/u/69438861?s=200&v=4"
```
<center><img src="`r URL1`"></center>
En colaboración con la comunidad de Open source que viene difundiendo [BEST](http://besteamperu.org/) en el Perú y latinoámerica, presentamos un proyecto basico que pueda ser útil en la estructurción de datos y visualización de la misma.
El proyecto esta orientada a analizar base de datos peruana, haciendo su limpieza, generando nuevas variables y finalmente quedando lista para su análisis estadístico y gráfico.
# **Base de datos**
La data fue extraida del Ministerio de Energía y Minas [(MINEM)](http://www.minem.gob.pe/_sector.php?idSector=1) de la seccíon minería y estadisticas de inversión minera, en formato de [excel](http://www.minem.gob.pe/_download.php?idSector=1&idTitular=9082).
Ésta base de datos es semiestructurada, por lo que fue conveniente transformarla en columnas únicas para su mejor comprensíon y mayor potencial de análisis.
## **Librerías**
Para hacer uso de las librerías, primero se tienen que instalar con el siguiente código ***install.packages("Libreria")*** y luego llamarlo con ***library(Librería)***
Se detallan algunas librerias que fueron utilizadas:
- library(readxl) : Es útil para leer archivos de Excel
- library(readr) : Es un componente de dityverse que lee archivos distintos al Excel
- library(tidyverse) : Contiene un conjunto de paquetes para manipular datos
- library(dplyr) : Paquete para manipular datos
- library(tidyr): Para convertir los datos a tidy dat
- library(knitr) : Para generar informes dinámicos
- library(forcats) : Para trabajar con variables tipo factor
- library(ggplot2) : Para generar gráficos
- library(kableExtra) : Para construir tablas
- library(rmarkdown) : Para compilar documentos en html o latex
- library(markdown): Permite fácil creación de documentos
- library(tables) : Exporta tablas en latex o html
- library(lubridate) : mMnejador de fechas
- library(plotly) : Genera gráficos dinámicos
```{r Libreria,echo=FALSE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
library(readxl)
library(readr)
library(tidyverse)
library(dplyr)
library(tidyr)
library(knitr)
library(forcats)
library(ggplot2)
library(kableExtra)
library(rmarkdown)
library(markdown)
library(tables)
library(lubridate)
library(plotly)
```
A continuación se muestra todo el proceso de la manipulación de datos:
```{r DyBD,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
#Fijamos nuestro directorio de trabajo
setwd("D:/CURSOS_VIRTUALES/BEST/Sesion3/Proyecto")
#Importamos la base de datos
INV2000_2019<-read_excel("INV2000-2019.xls", skip = 2, sheet = "Inversiones")
#Veamos cúales son nuestras variables
names(INV2000_2019)
#Nos quedamos con las observaciones de nuestro interés
INV2000_2019<-INV2000_2019[c(1:151),]
```
Vamos a cambiar los nombres de las columnas o variables para saber qué es exactamente cada columna:
```{r Nombres,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
# Aquí le estamos indicando que desde la columna 2 hasta la columna 13, asiganle el nombre de 2000, y asi sucesivamente.
names(INV2000_2019)[2:13]="2000"
names(INV2000_2019)[15:26]="2001"
names(INV2000_2019)[28:39]="2002"
names(INV2000_2019)[41:52]="2003"
names(INV2000_2019)[54:65]="2004"
names(INV2000_2019)[67:78]="2005"
names(INV2000_2019)[80:91]="2006"
names(INV2000_2019)[93:104]="2007"
names(INV2000_2019)[106:117]="2008"
names(INV2000_2019)[119:130]="2009"
names(INV2000_2019)[132:143]="2010"
names(INV2000_2019)[145:156]="2011"
names(INV2000_2019)[158:169]="2012"
names(INV2000_2019)[171:182]="2013"
names(INV2000_2019)[184:195]="2014"
names(INV2000_2019)[197:208]="2015"
names(INV2000_2019)[210:221]="2016"
names(INV2000_2019)[223:234]="2017"
names(INV2000_2019)[236:247]="2018"
names(INV2000_2019)[249:256]="2019"
```
Una vez cambiada los nombres de las columnas, separamos la base de datos según cada rubro de inversión.
Hemos identificado 6 rubros de inversion:
* 1) DESARROLLO Y PREPARACIÓN
* 2) EQUIPAMIENTO MINERO
* 3)EXPLORACIÓN
* 4)INFRAESTRUCTURA
* 5) PLANTA DE BENEFICIO Y
* 6) OTROS.
```{r Rubros, echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
Rubro1<-INV2000_2019[c(3:26),] # seleccionamos el rubro I
names(Rubro1)[1]="Departamento" #Le asignamos un nombre a la primera columna
Rubro1[,-1]<-sapply(Rubro1[,-1],function(y) round(as.numeric(as.character(y)),2)) # convertimos los datos a numérico
# Y hacemos lo mismo para los 5 rubros mineros restantes
Rubro2<-INV2000_2019[c(28:51),]
names(Rubro2)[1]="Departamento"
Rubro2[,-1]<-sapply(Rubro2[,-1],function(y) round(as.numeric(as.character(y)),2))
Rubro3<-INV2000_2019[c(53:76),]
names(Rubro3)[1]="Departamento"
Rubro3[,-1]<-sapply(Rubro3[,-1],function(y) round(as.numeric(as.character(y)),2))
Rubro4<-INV2000_2019[c(78:101),]
names(Rubro4)[1]="Departamento"
Rubro4[,-1]<-sapply(Rubro4[,-1],function(y) round(as.numeric(as.character(y)),2))
Rubro5<-INV2000_2019[c(103:125),]
names(Rubro5)[1]="Departamento"
Rubro5[,-1]<-sapply(Rubro5[,-1],function(y) round(as.numeric(as.character(y)),2))
Rubro6<-INV2000_2019[c(127:150),]
names(Rubro6)[1]="Departamento"
Rubro6[,-1]<-sapply(Rubro6[,-1],function(y) round(as.numeric(as.character(y)),2))
```
Como la data ya está separada, a continuacíon vamos a estructurar la data de cada rubro, es decir vamos a crear columnas únicas.
```{r Estructurar,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
#Estructuramos la data del rubro 1, convirtiendo en variables únicas
INVMINA1<-Rubro1%>%
pivot_longer(-Departamento, names_to = "Año", values_to = "Inversión")
INVMINA1$Rubro="Desarrollo y preparación" #Agregamos una variable que identifique el rubro
INVMINA2<-Rubro2%>%
pivot_longer(-Departamento,names_to = "Año", values_to = "Inversión")
INVMINA2$Rubro="Equipamiento Minero"
INVMINA3<-Rubro3%>%
pivot_longer(-Departamento,names_to = "Año", values_to = "Inversión")
INVMINA3$Rubro="Exploración"
INVMINA4<-Rubro4%>%
pivot_longer(-Departamento,names_to = "Año", values_to = "Inversión")
INVMINA4$Rubro="Infraestructura"
INVMINA5<-Rubro5%>%
pivot_longer(-Departamento,names_to = "Año", values_to = "Inversión")
INVMINA5$Rubro="Planta de beneficio"
INVMINA6<-Rubro6%>%
pivot_longer(-Departamento,names_to = "Año", values_to = "Inversión")
INVMINA6$Rubro="Otros"
#Veamos como quedó la data, una de ellas
names(INVMINA1)
# ¿Cuátas columas tiene?
# Rpt: como hemos visto tiene 5 columnas únicas
```
Como la data de cada rubro ya está estructurada, vamos a unir todas para tener una sola data estructurada, y lo hacemos con la función rbind. Esta función va unir la data debajo de cada una, es decir trabaja por fila.
```{r TodoUno,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
#creamos un objeto llamado DATAFINAL
DATAFINAL<-rbind(INVMINA1,INVMINA2,INVMINA3,INVMINA4,INVMINA5,INVMINA6)
#veamos cuál es la estructura
sapply(DATAFINAL,class)
#Cambiamos el nombre de la columna 3
names(DATAFINAL)[3]="Mes"
```
Si vemos la base de datos estructurada, encontramos que aún falta hacer limpieza, por lo tanto hacemos esa tarea adicional:
```{r Limpieza,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
#Generamos una lista que no deseamos tener en nuestra base de datos
Filtro<-c("Total 2000", "Total 2001","Total 2002", "Total 2003","Total 2004", "Total 2005", "Total 2006",
"Total 2007","Total 2008","Total 2009","Total 2010", "Total 2011",
"Total 2012", "Total 2013", "Total 2014", "Total 2015","Total 2016","Total 2017","Total 2018")
#Filtrar todas excepto Año=="Total*"
DATAFINAL<-DATAFINAL%>%
filter(!Año %in% Filtro)
sapply(DATAFINAL,class) # verificamos la estuctura de los datos
#Convertimos las columnas 2 y 3 en tipo numeric
DATAFINAL$Año<-sapply(DATAFINAL$Año, function(x) as.numeric(as.character(x)))
DATAFINAL$Mes<-sapply(DATAFINAL$Mes, function(y) as.numeric(as.integer(y)))
#Eliminamos los NAs
DATAFINAL<-DATAFINAL[complete.cases(DATAFINAL),]
#Convertimos en millones de dolares
DATAFINAL$Inversión<-round(DATAFINAL$Inversión/1000000,3)
#verificamos cómo quedó finalmente la estructura
sapply(DATAFINAL,class)
```
Ok, ahora ya podemos hacer estadística descriptiva y generar algunas gráficas, para vizualizar el comportamiento de las inversiones mineras en el Perú.
```{r Tablas,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
#CREAMOS TABLAS POR GRUPO
INV_DEPA<-DATAFINAL%>%
group_by(Departamento,Año)%>%
summarise(Total=sum(Inversión))%>%
arrange(Año)
#Volverlo en horizontal para visualizar mejor
INV_DEPAH<-INV_DEPA%>%
pivot_wider(names_prefix="Departamento", names_from = Año,values_from=Total)
names(INV_DEPAH)[2:21]<-c(2000:2019)
INV_DEPAH%>%
DT::datatable()
```
La taba de inversiones mineras están en millones de dólares, que incluye los 6 rubros mineros.
## ***Visualización gráfica*
```{r FiltroGrupo,echo=FALSE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
INV_DYRubro<-DATAFINAL%>%
group_by(Departamento, Año, Rubro)%>%
summarise(Total=sum(Inversión))%>%
arrange(Año)
#Filtramos por Rubro
R1<-INV_DYRubro%>%
filter(Rubro=="Desarrollo y preparación")
R2<-INV_DYRubro%>%
filter(Rubro=="Equipamiento Minero")
R3<-INV_DYRubro%>%
filter(Rubro=="Exploración")
R4<-INV_DYRubro%>%
filter(Rubro=="Infraestructura")
R5<-INV_DYRubro%>%
filter(Rubro=="Planta de beneficio")
R6<-INV_DYRubro%>%
filter(Rubro=="Otros")
```
Una gráfica general
```{r Grafico1,echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
G0<-ggplot(INV_DEPA, aes(x=Año, y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en el Peru por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G0)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
```
## ***Grafico de inversiones por rubro**
```{r GraficoRubro, echo=TRUE,warning=FALSE,message=FALSE,comment=F,cache=TRUE}
G1<-ggplot(R1, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en Desarrollo y preparación por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G1)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
G2<-ggplot(R2, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en Equipamiento Minero por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G2)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
G3<-ggplot(R3, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en Exploración por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G3)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
G4<-ggplot(R4, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en Infraestructura por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G4)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
G5<- ggplot(R5, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera en Planta de beneficio por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G5)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
G6<-ggplot(R6, aes(x=Año,y=Total))+
geom_line(aes(color=Departamento), size=1)+
theme_minimal()+
labs(title = "Inversión minera Otros por Departamenos",
subtitle = "En millones de dolares",
caption = "Fuente: MINEM")
ggplotly(G6)%>% layout(legend = list(orientation = "h", x = 0.3, y = -0.1))
```
# Final