Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG7/Grupo_6_r .R
2714 views
1
### TAREA 7 - GRUPO 6 ###
2
############################################
3
############################################
4
############################################
5
6
library(readxl)
7
library(stringr) # libreria para trabajar expresiones regulares
8
library(dplyr)
9
library(lubridate) # dmy
10
library(tidyverse) # dplyr, ggplot2, tdyr, stringi, stringr
11
12
#Primero, setearemos el directorio
13
14
user <- Sys.getenv("USERNAME") # username
15
16
setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/data/crime_data") ) # set directorio
17
18
19
#utilizaremos la base de datos data_administrativa.xlsx que esta dentro de la carpeta crime_data
20
#seleccionamos la base de datos para que sea leida por el programa R studio
21
22
data_administrativa <- read_excel("C:/Users/User/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx")
23
24
#convertimos la misma basa de datos de excel en data frame
25
data2 <- data.frame(read_excel("C:/Users/User/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx"))
26
27
sapply(data_administrativa, typeof)
28
29
apply(data_administrativa , 2, function(x) sum(is.na(x)))
30
31
#------------------------------------------------------------------------
32
####### PREGUNTA 1 #######
33
###########################
34
35
#Convertir el nombre de las variables a minuscula
36
37
#utilizamos el comando tolower para convertir las variables de la base de datos "data" en min?sculas
38
39
colnames(data_administrativa) <- tolower(colnames(data_administrativa))
40
41
colnames(data2) <- tolower(colnames(data2))
42
43
#------------------------------------------------------------------------
44
####### PREGUNTA 2 #######
45
###########################
46
47
#Fijese que el nombre de la persona tiene puntuaciones y n?mero, retirar todo aquello que no permita identificar el nombre correcto.
48
#Entonces limpiamos la columna nombre mediante string replace
49
50
data_administrativa$nombre<- apply(data_administrativa['nombre'],
51
1 ,
52
function(x) str_replace(x,"[^a-zA-Z\\s]+",''))
53
54
#------------------------------------------------------------------------
55
####### PREGUNTA 3 #######
56
###########################
57
58
#DEBEMOS Limpiar la fecha de nacimiento de aquellos elementos que la ensucien. Luego crear otra variable con el formato de fecha.
59
60
###Primero, se limpiaran los datos de la variable born_date reemplazando los caracteres de m?s por espacios vacios o nada
61
#para ello, se empleara el comando str_replace
62
data_administrativa$born_date<- apply(data_administrativa['born_date'],
63
1 ,
64
function(x) str_replace(x,"(00:00)|(#%)|(!)", ''))
65
66
67
###Luego, se creara una nueva variable con el nombre "fecha" en que se extraera unicamente las fechas
68
#por lo que el formato debe tener dias, meses y año.
69
70
data_administrativa$fecha <-as.Date(data_administrativa$born_date,format='%d/%m/%Y')
71
72
#------------------------------------------------------------------------
73
####### PREGUNTA 4 #######
74
###########################
75
76
#Limpiar la columna de edad, el cual tiene puntuaciones que no permiten identificar la edad correcta.
77
###Usamos el comando gsub porque eso nos ayudará a reemplazar datos que no se encuentren dentro del intervalo
78
79
data_administrativa$age <- apply(data_administrativa['age'],
80
1 ,
81
function(x) gsub("[^0-9]", '', x))
82
83
###Empleamos el comando str_extract para extraer unicamente los n?meros de la columna age. Ademas, usamos "+" al final del rango de
84
#numeros para que selecciones todos los digitos.
85
86
data_administrativa$edad <- apply(data_administrativa['age'],
87
1 ,
88
function(x) str_extract(x,"[0-9]+", '', x))
89
90
#------------------------------------------------------------------------
91
####### PREGUNTA 5 #######
92
###########################
93
94
#Crear dummies segun el rango del sentenciado en la organizacion criminal
95
96
#dum1: toma el valor 1 si el sentenciado fue lider de la banda criminal
97
#dum2: toma el valor 1 si el sentenciado fue cabecilla local
98
#dum3: toma el valor 1 si el sentenciado fue cabecilla regional
99
#dum4: toma el valor 1 si el sentenciado fue sicario
100
#dum5: toma el valor 1 si el sentenciado realizo extorsion
101
#dum6: toma el valor 1 si el sentenciado fue miembro regular
102
#dum7: toma el valor 1 si el sentenciado fue novato o principiante
103
104
#PRIMERO, Limpiaremos la variable de novato y la de extorsion, con el comando string replace
105
106
data_administrativa$rank<- apply(data_administrativa['rank'],
107
1 ,
108
function(x) str_replace(x,"(principiante)|(novto)|(noato)",'novato'))
109
110
data_administrativa$rank<- apply(data_administrativa['rank'],
111
1 ,
112
function(x) str_replace(x,"(extorcionador)",'extorsion'))
113
114
#AHORA, corresponde crear las variables dummies
115
116
data_administrativa$dum1 <- ifelse(data_administrativa$rank == 'lider de la banda criminal', 1, 0)
117
data_administrativa$dum2 <- ifelse(data_administrativa$rank == 'cabecilla local', 1, 0)
118
data_administrativa$dum3 <- ifelse(data_administrativa$rank == 'cabecilla regional', 1, 0)
119
data_administrativa$dum4 <- ifelse(data_administrativa$rank == 'sicario', 1, 0)
120
data_administrativa$dum5 <- ifelse(data_administrativa$rank == 'extorsion', 1, 0)
121
data_administrativa$dum6 <- ifelse(data_administrativa$rank == 'miembro', 1, 0)
122
data_administrativa$dum7 <- ifelse(data_administrativa$rank == 'novato', 1, 0)
123
124
#------------------------------------------------------------------------
125
####### PREGUNTA 7 #######
126
###########################
127
128
#AQUI NOS corresponde Extraer el usuario del correo electronico
129
#ENTONCES, necesitamos extraer el usuario del listado de correos, no olvidando los espacios necesarios para arroba
130
131
data_admi$correo_abogado <- apply(data_administrativa['correo_abogado'],
132
1 ,
133
function(x) str_extract(x,"[\\w+)\\@\\.*]"))
134
135
#------------------------------------------------------------------------
136
####### PREGUNTA 8 #######
137
###########################
138
139
#AHORA, Nos piden crear una columna que contenga solo la informaci?n del n?mero de dni (por ejemplo: 01-75222677)
140
141
#ENTONCES, necesitamos crear una columna que contenga la información del DNI
142
143
data_administrativa$dni <- apply(data_administrativa['dni'],
144
1 ,
145
function(x) str_replace(x,"(dni es)", ''))
146
147
#------------------------------------------------------------------------
148
####### PREGUNTA 9 #######
149
###########################
150
151
#PARA ESTA PARTE, respecto a la columna observaciones, necesitamos crear las siguiente variables:
152
153
#crimen: debe contener informacion del delito cometido
154
#n_hijos: cantidad de hijos del criminal
155
#edad_inicio : edad de inicio en actividades criminales
156
157
###PRIMERO, se creara la variable crimen
158
###CONFORME a lo mencionado en clase, aqui usamos la función look around, por lo que utilizamos
159
#los comandos string extract
160
161
data_administrativa$crimen <- data_administrativa$observaciones |> str_extract("(?<= por )[^\\d\\:]+")
162
163
data_administrativa$crimen <- apply(data_administrativa['crimen'],
164
1 ,
165
function(x) str_replace(x,"(dice tener)|(inio de actividades ilegales)|(tiene) |(,)", ''))
166
167
###SEGUNDO, se creara la variable de cantidad de hijos del criminal
168
#utilizamos el string extract mediante el conteo continuo d+
169
170
data_administrativa$n_hijos <- data_administrativa$observaciones |> str_extract("(?<=tiene )[\\d+\\:]+")
171
172
173
###TERCERO, se creara la variable sobre edad de inicio en actividad criminal
174
#utilizamos el string extract mediante el conteo continuo d+ y resultante para cantidad de años
175
176
data_administrativa$edad_inicio <- data_administrativa$observaciones |> str_extract("[\\d+\\:]+(?= años)")
177
178
179
180
181
182
183