Path: blob/main/Trabajo_grupal/WG7/Grupo 5_R_Tarea7.R
2714 views
# Grupo 5 Tarea 712library(haven)3library(readr)4library(readxl)5library(stringr)6library(dplyr)7library(lubridate)8library(tidyverse)9library(fastDummies)10rm(list=ls(all=TRUE))1112user <- Sys.getenv("USERNAME") # username1314setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Trabajo_grupal") ) # set directorio1516data_criminales <- read_excel("../data/crime_data/data_administrativa.xlsx")1718#Pregunta 1 Nombre de las variables en minúscula1920colnames(data_criminales) <- tolower(colnames(data_criminales)) # capital letters to lower letters2122#Pregunta 2 Retirar los puntos, números, etc2324data_criminales$nombre2 <- apply(data_criminales['nombre'],251 ,26function(x) str_replace(x,"[^a-zA-Z\\s]+",''))2728#Lo expresamos en otra variable para notar el cambio2930#Pregunta 3 Fecha de nacimiento3132data_criminales$born_date <- apply(data_criminales['born_date'],331 ,34function(x) str_replace(x,"(00:00)|(#%)|(!)", ''))3536#Ahora, convertir a formaro fecha en otra variable3738data_criminales$fecha_nacimiento <- as.Date(data_criminales$born_date,format='%d/%m/%Y')3940#Pregunta 4 Limpiar las edades4142data_criminales$edad2 <- apply(data_criminales['age'],431 ,44function(x) str_extract(x,"[0-9]{1,}"))4546#Creamos otra variable de edad para comparar los cambios filtrados4748#Pregunta 5 Dummies4950data_criminales <- dummy_cols(data_criminales, select_columns = 'rank') #Hay problemas de identificación de datos5152unique(data_criminales$rank)5354# "cabecilla local" "cabecilla regional" "miembro" "novato" "sicario"55# "lider de la banda criminal" "novto" "principiante" "extorsionador" "extorsion"56# "noato"5758#Debemos convertir "novto" "principiante" "novato" "noato" en categoría unica5960data_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)6162#Debemos convertir "extorsionador" "extorsion" en categoría unica6364data_criminales$extorsionador <- ifelse(data_criminales$rank_extorsionador == 1 | data_criminales$rank_extorsion == 1, 1, 0)6566#Ahora, borramos las columnas que no nos sirven6768data_criminales$rank_novto <- NULL69data_criminales$rank_principiante <- NULL70data_criminales$rank_novato <- NULL71data_criminales$rank_noato <- NULL72data_criminales$rank_extorsionador <- NULL73data_criminales$rank_extorsion <- NULL7475#Nos quedamos con las 7 dummies de ranking criminal7677#Pregunta 7 Extraer usuario de correo7879str_match(data_criminales$correo_abogado, "(\\w+)\\@.*") #Aplicamos el código de extracción hasta antes del @ y obtendremos el usuario para la columna de correo80#No lo hacemos variable porque no se indicó8182#Pregunta 8 Columna con número de DNI8384data_criminales$número_dni <- apply(data_criminales['dni'],851 ,86function(x) str_match(x,"\\.*(\\d+\\-\\d+)$")[2])8788#Obtenemos la columna de dni filtrando por valores numéricos y - a las observaciones de dni8990#Pregunta 9 Crear observaciones de delito, nhijos y edad de incio de actividades criminales9192data_criminales$crimen <- apply(data_criminales['observaciones'],931 ,94function(x) str_match(x,"\\.*+[r/p][\\w+^a-zA-Z\\s]+"))9596#Filtramos para tener las observaciones luego de p y r. Así, obtenemos los crímenes que cometieron de los que son acusados9798data_criminales$n_hijos <- apply(data_criminales['observaciones'],991 ,100function(x) str_match(x, "\\d+(?= hij[p/o]s)"))101102#Filtramos para tener las observaciones numéricas antes de hij[p/o]s porque hay errores de escritura103104data_criminales$edad_inicio <- apply(data_criminales['observaciones'],1051 ,106function(x) str_match(x, "\\d+(?= años)"))107108#Filtramos para tener las observaciones numéricas antes de años109110111