Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG7/Grupo 5_R_Tarea7.R
2714 views
1
# Grupo 5 Tarea 7
2
3
library(haven)
4
library(readr)
5
library(readxl)
6
library(stringr)
7
library(dplyr)
8
library(lubridate)
9
library(tidyverse)
10
library(fastDummies)
11
rm(list=ls(all=TRUE))
12
13
user <- Sys.getenv("USERNAME") # username
14
15
setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Trabajo_grupal") ) # set directorio
16
17
data_criminales <- read_excel("../data/crime_data/data_administrativa.xlsx")
18
19
#Pregunta 1 Nombre de las variables en minúscula
20
21
colnames(data_criminales) <- tolower(colnames(data_criminales)) # capital letters to lower letters
22
23
#Pregunta 2 Retirar los puntos, números, etc
24
25
data_criminales$nombre2 <- apply(data_criminales['nombre'],
26
1 ,
27
function(x) str_replace(x,"[^a-zA-Z\\s]+",''))
28
29
#Lo expresamos en otra variable para notar el cambio
30
31
#Pregunta 3 Fecha de nacimiento
32
33
data_criminales$born_date <- apply(data_criminales['born_date'],
34
1 ,
35
function(x) str_replace(x,"(00:00)|(#%)|(!)", ''))
36
37
#Ahora, convertir a formaro fecha en otra variable
38
39
data_criminales$fecha_nacimiento <- as.Date(data_criminales$born_date,format='%d/%m/%Y')
40
41
#Pregunta 4 Limpiar las edades
42
43
data_criminales$edad2 <- apply(data_criminales['age'],
44
1 ,
45
function(x) str_extract(x,"[0-9]{1,}"))
46
47
#Creamos otra variable de edad para comparar los cambios filtrados
48
49
#Pregunta 5 Dummies
50
51
data_criminales <- dummy_cols(data_criminales, select_columns = 'rank') #Hay problemas de identificación de datos
52
53
unique(data_criminales$rank)
54
55
# "cabecilla local" "cabecilla regional" "miembro" "novato" "sicario"
56
# "lider de la banda criminal" "novto" "principiante" "extorsionador" "extorsion"
57
# "noato"
58
59
#Debemos convertir "novto" "principiante" "novato" "noato" en categoría unica
60
61
data_criminales$novato <- ifelse(data_criminales$rank_novto == 1 | data_criminales$rank_principiante == 1 | data_criminales$rank_novato == 1 | data_criminales$rank_noato == 1, 1, 0)
62
63
#Debemos convertir "extorsionador" "extorsion" en categoría unica
64
65
data_criminales$extorsionador <- ifelse(data_criminales$rank_extorsionador == 1 | data_criminales$rank_extorsion == 1, 1, 0)
66
67
#Ahora, borramos las columnas que no nos sirven
68
69
data_criminales$rank_novto <- NULL
70
data_criminales$rank_principiante <- NULL
71
data_criminales$rank_novato <- NULL
72
data_criminales$rank_noato <- NULL
73
data_criminales$rank_extorsionador <- NULL
74
data_criminales$rank_extorsion <- NULL
75
76
#Nos quedamos con las 7 dummies de ranking criminal
77
78
#Pregunta 7 Extraer usuario de correo
79
80
str_match(data_criminales$correo_abogado, "(\\w+)\\@.*") #Aplicamos el código de extracción hasta antes del @ y obtendremos el usuario para la columna de correo
81
#No lo hacemos variable porque no se indicó
82
83
#Pregunta 8 Columna con número de DNI
84
85
data_criminales$número_dni <- apply(data_criminales['dni'],
86
1 ,
87
function(x) str_match(x,"\\.*(\\d+\\-\\d+)$")[2])
88
89
#Obtenemos la columna de dni filtrando por valores numéricos y - a las observaciones de dni
90
91
#Pregunta 9 Crear observaciones de delito, nhijos y edad de incio de actividades criminales
92
93
data_criminales$crimen <- apply(data_criminales['observaciones'],
94
1 ,
95
function(x) str_match(x,"\\.*+[r/p][\\w+^a-zA-Z\\s]+"))
96
97
#Filtramos para tener las observaciones luego de p y r. Así, obtenemos los crímenes que cometieron de los que son acusados
98
99
data_criminales$n_hijos <- apply(data_criminales['observaciones'],
100
1 ,
101
function(x) str_match(x, "\\d+(?= hij[p/o]s)"))
102
103
#Filtramos para tener las observaciones numéricas antes de hij[p/o]s porque hay errores de escritura
104
105
data_criminales$edad_inicio <- apply(data_criminales['observaciones'],
106
1 ,
107
function(x) str_match(x, "\\d+(?= años)"))
108
109
#Filtramos para tener las observaciones numéricas antes de años
110
111