Path: blob/main/Trabajo_grupal/WG7/Grupo_6_r .R
2714 views
### TAREA 7 - GRUPO 6 ###1############################################2############################################3############################################45library(readxl)6library(stringr) # libreria para trabajar expresiones regulares7library(dplyr)8library(lubridate) # dmy9library(tidyverse) # dplyr, ggplot2, tdyr, stringi, stringr1011#Primero, setearemos el directorio1213user <- Sys.getenv("USERNAME") # username1415setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/data/crime_data") ) # set directorio161718#utilizaremos la base de datos data_administrativa.xlsx que esta dentro de la carpeta crime_data19#seleccionamos la base de datos para que sea leida por el programa R studio2021data_administrativa <- read_excel("C:/Users/User/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx")2223#convertimos la misma basa de datos de excel en data frame24data2 <- data.frame(read_excel("C:/Users/User/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx"))2526sapply(data_administrativa, typeof)2728apply(data_administrativa , 2, function(x) sum(is.na(x)))2930#------------------------------------------------------------------------31####### PREGUNTA 1 #######32###########################3334#Convertir el nombre de las variables a minuscula3536#utilizamos el comando tolower para convertir las variables de la base de datos "data" en min?sculas3738colnames(data_administrativa) <- tolower(colnames(data_administrativa))3940colnames(data2) <- tolower(colnames(data2))4142#------------------------------------------------------------------------43####### PREGUNTA 2 #######44###########################4546#Fijese que el nombre de la persona tiene puntuaciones y n?mero, retirar todo aquello que no permita identificar el nombre correcto.47#Entonces limpiamos la columna nombre mediante string replace4849data_administrativa$nombre<- apply(data_administrativa['nombre'],501 ,51function(x) str_replace(x,"[^a-zA-Z\\s]+",''))5253#------------------------------------------------------------------------54####### PREGUNTA 3 #######55###########################5657#DEBEMOS Limpiar la fecha de nacimiento de aquellos elementos que la ensucien. Luego crear otra variable con el formato de fecha.5859###Primero, se limpiaran los datos de la variable born_date reemplazando los caracteres de m?s por espacios vacios o nada60#para ello, se empleara el comando str_replace61data_administrativa$born_date<- apply(data_administrativa['born_date'],621 ,63function(x) str_replace(x,"(00:00)|(#%)|(!)", ''))646566###Luego, se creara una nueva variable con el nombre "fecha" en que se extraera unicamente las fechas67#por lo que el formato debe tener dias, meses y año.6869data_administrativa$fecha <-as.Date(data_administrativa$born_date,format='%d/%m/%Y')7071#------------------------------------------------------------------------72####### PREGUNTA 4 #######73###########################7475#Limpiar la columna de edad, el cual tiene puntuaciones que no permiten identificar la edad correcta.76###Usamos el comando gsub porque eso nos ayudará a reemplazar datos que no se encuentren dentro del intervalo7778data_administrativa$age <- apply(data_administrativa['age'],791 ,80function(x) gsub("[^0-9]", '', x))8182###Empleamos el comando str_extract para extraer unicamente los n?meros de la columna age. Ademas, usamos "+" al final del rango de83#numeros para que selecciones todos los digitos.8485data_administrativa$edad <- apply(data_administrativa['age'],861 ,87function(x) str_extract(x,"[0-9]+", '', x))8889#------------------------------------------------------------------------90####### PREGUNTA 5 #######91###########################9293#Crear dummies segun el rango del sentenciado en la organizacion criminal9495#dum1: toma el valor 1 si el sentenciado fue lider de la banda criminal96#dum2: toma el valor 1 si el sentenciado fue cabecilla local97#dum3: toma el valor 1 si el sentenciado fue cabecilla regional98#dum4: toma el valor 1 si el sentenciado fue sicario99#dum5: toma el valor 1 si el sentenciado realizo extorsion100#dum6: toma el valor 1 si el sentenciado fue miembro regular101#dum7: toma el valor 1 si el sentenciado fue novato o principiante102103#PRIMERO, Limpiaremos la variable de novato y la de extorsion, con el comando string replace104105data_administrativa$rank<- apply(data_administrativa['rank'],1061 ,107function(x) str_replace(x,"(principiante)|(novto)|(noato)",'novato'))108109data_administrativa$rank<- apply(data_administrativa['rank'],1101 ,111function(x) str_replace(x,"(extorcionador)",'extorsion'))112113#AHORA, corresponde crear las variables dummies114115data_administrativa$dum1 <- ifelse(data_administrativa$rank == 'lider de la banda criminal', 1, 0)116data_administrativa$dum2 <- ifelse(data_administrativa$rank == 'cabecilla local', 1, 0)117data_administrativa$dum3 <- ifelse(data_administrativa$rank == 'cabecilla regional', 1, 0)118data_administrativa$dum4 <- ifelse(data_administrativa$rank == 'sicario', 1, 0)119data_administrativa$dum5 <- ifelse(data_administrativa$rank == 'extorsion', 1, 0)120data_administrativa$dum6 <- ifelse(data_administrativa$rank == 'miembro', 1, 0)121data_administrativa$dum7 <- ifelse(data_administrativa$rank == 'novato', 1, 0)122123#------------------------------------------------------------------------124####### PREGUNTA 7 #######125###########################126127#AQUI NOS corresponde Extraer el usuario del correo electronico128#ENTONCES, necesitamos extraer el usuario del listado de correos, no olvidando los espacios necesarios para arroba129130data_admi$correo_abogado <- apply(data_administrativa['correo_abogado'],1311 ,132function(x) str_extract(x,"[\\w+)\\@\\.*]"))133134#------------------------------------------------------------------------135####### PREGUNTA 8 #######136###########################137138#AHORA, Nos piden crear una columna que contenga solo la informaci?n del n?mero de dni (por ejemplo: 01-75222677)139140#ENTONCES, necesitamos crear una columna que contenga la información del DNI141142data_administrativa$dni <- apply(data_administrativa['dni'],1431 ,144function(x) str_replace(x,"(dni es)", ''))145146#------------------------------------------------------------------------147####### PREGUNTA 9 #######148###########################149150#PARA ESTA PARTE, respecto a la columna observaciones, necesitamos crear las siguiente variables:151152#crimen: debe contener informacion del delito cometido153#n_hijos: cantidad de hijos del criminal154#edad_inicio : edad de inicio en actividades criminales155156###PRIMERO, se creara la variable crimen157###CONFORME a lo mencionado en clase, aqui usamos la función look around, por lo que utilizamos158#los comandos string extract159160data_administrativa$crimen <- data_administrativa$observaciones |> str_extract("(?<= por )[^\\d\\:]+")161162data_administrativa$crimen <- apply(data_administrativa['crimen'],1631 ,164function(x) str_replace(x,"(dice tener)|(inio de actividades ilegales)|(tiene) |(,)", ''))165166###SEGUNDO, se creara la variable de cantidad de hijos del criminal167#utilizamos el string extract mediante el conteo continuo d+168169data_administrativa$n_hijos <- data_administrativa$observaciones |> str_extract("(?<=tiene )[\\d+\\:]+")170171172###TERCERO, se creara la variable sobre edad de inicio en actividad criminal173#utilizamos el string extract mediante el conteo continuo d+ y resultante para cantidad de años174175data_administrativa$edad_inicio <- data_administrativa$observaciones |> str_extract("[\\d+\\:]+(?= años)")176177178179180181182183