Path: blob/main/Trabajo_grupal/WG7/Solucion/script_r.R
2835 views
################ Solución R ############################12### Regex ####34# clear environment56rm(list=ls(all=TRUE))78# load libraries910librarian::shelf(tidyverse,haven, readxl, lubridate, stringi)1112# stringi para retirar tildes1314user <- Sys.getenv("USERNAME") # username1516setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Trabajo_grupal/WG7/Solucion") ) # set directorio171819data_crime <- read_excel("../../../data/crime_data/data_administrativa.xlsx")202122# 1.0 nombre de las columnas en minuscula232425colnames(data_crime) <- tolower(colnames(data_crime))26272829# Retiramos las tildes (incluso el simbolo de la ñ) de las columnas nombre, rango criminal y observaciones3031data_crime$nombre <- stri_trans_general(data_crime$nombre, id = "Latin-ASCII")3233data_crime$rank <- stri_trans_general(data_crime$rank, id = "Latin-ASCII")3435data_crime$observaciones <- stri_trans_general(data_crime$observaciones, id = "Latin-ASCII")3637# Retiramos los espacios vacios al incio y al final3839# Usaremos trim. Un ejemplo4041str_trim(" Arriba Perú ")424344# name, date_born and age clean454647data_crime <- data_crime %>% mutate(nombre = str_trim(nombre), rank = str_trim(rank),48observaciones = str_trim(observaciones),49nombre_clean = str_replace(nombre,"[^a-zA-Z\\s]",''),50date_clean = str_replace(born_date,"(\"#%)|(!)|(00:00)",''),51age_clean = str_replace(age,"\\D+",''),52new_date = dmy( date_clean ) # usamos lubridate53)5455# Dummies por rango criminal5657data_crime <- data_crime |> mutate(58dum1 = ifelse(str_detect(rank,"criminal$"), 1 , 0 ),59dum2 = ifelse(str_detect(rank,"local$"), 1 , 0 ),60dum3 = ifelse(str_detect(rank,"regional$"), 1 , 0 ),61dum4 = ifelse(str_detect(rank,"sicario"), 1 , 0 ),62dum5 = ifelse(str_detect(rank,"^extor"), 1 , 0 ),63dum6 = ifelse(str_detect(rank,"miembro"), 1 , 0 ),64dum7 = ifelse(str_detect(rank,"(^princ)|(^nov)|(^noa)"), 1 , 0 ),65user = str_match(correo_abogado, "(\\w+)\\@.*")[,2]66)6768# Uso de Look around regex6970data_crime <- data_crime |> mutate(71dni_clean = str_extract(dni,"(?<=dni es )[\\d+\\-]+"), # Positive lpok behind72crimen = str_extract(observaciones,"(?<=sentenciado por )[\\w+\\s]+"),73cant_hijos = str_extract(observaciones,"(?<=tiene |tener )\\d+"),74inicio_edad = str_extract(observaciones,"\\d+(?= anos)") # Negative look behind7576)7778798081828384858687888990919293949596979899100101102103104105