Objetivo: Esta práctica determina el distrito deonde suceden mas y menos accidentes del año 2018

Cargar librerias necesarias

library(readr) #La libreria

Cargar los datos que estan en INTERNET

accidentes2018 <- read.csv("https://raw.githubusercontent.com/rpizarrog/Curso-Titulacion-Data-Science-/master/2019/Datos/AccidentesBicicletas_2018.csv",
                        encoding = "UTF-8")

class(accidentes2018)  # Devuelve el tipo de datos. Quermos un data.frame
## [1] "data.frame"

Definiendo los nombres de columnad adecuados

# VAMOS A TRABAJAR CON accidentes2018
names(accidentes2018)
##  [1] "FECHA"                 "RANGO.HORARIO"        
##  [3] "DIA.SEMANA"            "DISTRITO"             
##  [5] "LUGAR.ACCIDENTE"       "N.U.00BA."            
##  [7] "N.U.00BA..PARTE"       "CPFA.Granizo"         
##  [9] "CPFA.Hielo"            "CPFA.Lluvia"          
## [11] "CPFA.Niebla"           "CPFA.Seco"            
## [13] "CPFA.Nieve"            "CPSV.Mojada"          
## [15] "CPSV.Aceite"           "CPSV.Barro"           
## [17] "CPSV.Grava.Suelta"     "CPSV.Hielo"           
## [19] "CPSV.Seca.Y.Limpia"    "X..N.U.00BA..VICTIMAS"
## [21] "TIPO.ACCIDENTE"        "Tipo.Vehiculo"        
## [23] "TIPO.PERSONA"          "SEXO"                 
## [25] "LESIVIDAD"             "Tramo.Edad"
# Cambiamos el nombre de estos atributo de accidentes2018
columnas <- colnames(accidentes2018)
columnas[6] <- "NO" # Cambia el nombre de columna
columnas[7] <- "NO.PARTE" # Cambia el nombre de columna
columnas[20] <- "NO.VICTIMAS" # Cambia el nombre de columna
colnames(accidentes2018) <- columnas
names(accidentes2018) # Ahora como se ven los nombres de columnas
##  [1] "FECHA"              "RANGO.HORARIO"      "DIA.SEMANA"        
##  [4] "DISTRITO"           "LUGAR.ACCIDENTE"    "NO"                
##  [7] "NO.PARTE"           "CPFA.Granizo"       "CPFA.Hielo"        
## [10] "CPFA.Lluvia"        "CPFA.Niebla"        "CPFA.Seco"         
## [13] "CPFA.Nieve"         "CPSV.Mojada"        "CPSV.Aceite"       
## [16] "CPSV.Barro"         "CPSV.Grava.Suelta"  "CPSV.Hielo"        
## [19] "CPSV.Seca.Y.Limpia" "NO.VICTIMAS"        "TIPO.ACCIDENTE"    
## [22] "Tipo.Vehiculo"      "TIPO.PERSONA"       "SEXO"              
## [25] "LESIVIDAD"          "Tramo.Edad"

Cambiando el formato de la columna FECHA como date y agregando una nueva columna llamada MES de tipo numeric que define el numero de mes de la fecha

# Limpiar y depurar el campo FECHA
accidentes2018$FECHA <- as.Date(accidentes2018$FECHA, "%d/%m/%Y")
accidentes2018$MES <- as.numeric(format(accidentes2018$FECHA,format="%m"))

Asi quedaron los datos

#accidentes2018

Determinar el atributo distrito y ver cuales son

distritos <- unique(accidentes2018$DISTRITO)


distritos # Son los distritos que hay en Madrid
##  [1] ARGANZUELA                     CENTRO                        
##  [3] SALAMANCA                      CIUDAD LINEAL                 
##  [5] LATINA                         SAN BLAS                      
##  [7] VILLA DE VALLECAS              RETIRO                        
##  [9] FUENCARRAL-EL PARDO            USERA                         
## [11] TETUAN                         CHAMBERI                      
## [13] MONCLOA-ARAVACA                HORTALEZA                     
## [15] VILLAVERDE                     CARABANCHEL                   
## [17] CHAMARTIN                      MORATALAZ                     
## [19] VICALVARO                      PUENTE DE VALLECAS            
## [21] BARAJAS                       
## 21 Levels: ARGANZUELA                     ...

Vamos a encontrar los accidentes por DISTRITO

dist1 <- subset(accidentes2018, DISTRITO == distritos[1]) 
dist2 <- subset(accidentes2018, DISTRITO == distritos[2])
dist3 <- subset(accidentes2018, DISTRITO == distritos[3])
dist4 <- subset(accidentes2018, DISTRITO == distritos[4])
dist5 <- subset(accidentes2018, DISTRITO == distritos[5])
dist6 <- subset(accidentes2018, DISTRITO == distritos[6])
dist7 <- subset(accidentes2018, DISTRITO == distritos[7])
dist8 <- subset(accidentes2018, DISTRITO == distritos[8])
dist9 <- subset(accidentes2018, DISTRITO == distritos[9])
dist10 <- subset(accidentes2018, DISTRITO == distritos[10])
dist11 <- subset(accidentes2018, DISTRITO == distritos[11])
dist12 <- subset(accidentes2018, DISTRITO == distritos[12])
dist13 <- subset(accidentes2018, DISTRITO == distritos[13])
dist14 <- subset(accidentes2018, DISTRITO == distritos[14])
dist15 <- subset(accidentes2018, DISTRITO == distritos[15])
dist16 <- subset(accidentes2018, DISTRITO == distritos[16])
dist17 <- subset(accidentes2018, DISTRITO == distritos[17])
dist18 <- subset(accidentes2018, DISTRITO == distritos[18])
dist19 <- subset(accidentes2018, DISTRITO == distritos[19])
dist20 <- subset(accidentes2018, DISTRITO == distritos[20])
dist21 <- subset(accidentes2018, DISTRITO == distritos[21])

Mostramos algunos regiistros

dist1$FECHA
##  [1] "2018-01-01" "2018-01-09" "2018-01-24" "2018-01-24" "2018-03-12"
##  [6] "2018-03-28" "2018-03-28" "2018-03-29" "2018-04-21" "2018-05-14"
## [11] "2018-05-21" "2018-06-12" "2018-06-18" "2018-06-21" "2018-06-25"
## [16] "2018-06-26" "2018-07-05" "2018-07-05" "2018-07-10" "2018-07-22"
## [21] "2018-08-03" "2018-08-05" "2018-08-11" "2018-08-26" "2018-08-30"
## [26] "2018-09-05" "2018-09-10" "2018-09-25" "2018-10-13" "2018-10-16"
## [31] "2018-10-27" "2018-11-08" "2018-11-29"
dist5$DISTRITO
##  [1] LATINA                         LATINA                        
##  [3] LATINA                         LATINA                        
##  [5] LATINA                         LATINA                        
##  [7] LATINA                         LATINA                        
##  [9] LATINA                         LATINA                        
## [11] LATINA                         LATINA                        
## [13] LATINA                         LATINA                        
## [15] LATINA                         LATINA                        
## [17] LATINA                         LATINA                        
## [19] LATINA                         LATINA                        
## [21] LATINA                         LATINA                        
## [23] LATINA                         LATINA                        
## [25] LATINA                         LATINA                        
## [27] LATINA                         LATINA                        
## [29] LATINA                         LATINA                        
## [31] LATINA                         LATINA                        
## [33] LATINA                         LATINA                        
## [35] LATINA                        
## 21 Levels: ARGANZUELA                     ...

Utilizamos la función length() para ver cuantos registros por cada distrito

dist1Accidentes <- length(dist1$DISTRITO)
dist2Accidentes <- length(dist2$DISTRITO)
dist3Accidentes <- length(dist3$DISTRITO)
dist4Accidentes <- length(dist4$DISTRITO)
dist5Accidentes <- length(dist5$DISTRITO)
dist6Accidentes <- length(dist6$DISTRITO)
dist7Accidentes <- length(dist7$DISTRITO)
dist8Accidentes <- length(dist8$DISTRITO)
dist9Accidentes <- length(dist9$DISTRITO)
dist10Accidentes <- length(dist10$DISTRITO)
dist11Accidentes <- length(dist11$DISTRITO)
dist12Accidentes <- length(dist12$DISTRITO)
dist13Accidentes <- length(dist13$DISTRITO)
dist14Accidentes <- length(dist14$DISTRITO)
dist15Accidentes <- length(dist15$DISTRITO)
dist16Accidentes <- length(dist16$DISTRITO)
dist17Accidentes <- length(dist17$DISTRITO)
dist18Accidentes <- length(dist18$DISTRITO)
dist19Accidentes <- length(dist19$DISTRITO)
dist20Accidentes <- length(dist20$DISTRITO)
dist21Accidentes <- length(dist21$DISTRITO)

Crer un data frame con el resumen de los datos por cada distrito

dist1Accidentes
## [1] 33
dist2Accidentes
## [1] 124
dist3Accidentes
## [1] 48
dist4Accidentes
## [1] 26
dist5Accidentes
## [1] 35
dist6Accidentes
## [1] 24
dist7Accidentes
## [1] 15
dist8Accidentes
## [1] 52
dist9Accidentes
## [1] 33
dist10Accidentes
## [1] 18
dist11Accidentes
## [1] 34
dist12Accidentes
## [1] 51
dist13Accidentes
## [1] 51
dist14Accidentes
## [1] 22
dist15Accidentes
## [1] 12
dist16Accidentes
## [1] 36
dist17Accidentes
## [1] 26
dist18Accidentes
## [1] 13
dist19Accidentes
## [1] 10
dist20Accidentes
## [1] 29
dist21Accidentes
## [1] 8

Ahora a construir un solo data frame resumen con disrito y cantidad

accidentes <- c(dist1Accidentes, dist2Accidentes, dist3Accidentes, dist4Accidentes, dist5Accidentes, dist6Accidentes, dist7Accidentes, dist8Accidentes, dist9Accidentes, dist10Accidentes, dist11Accidentes, dist12Accidentes, dist13Accidentes, dist14Accidentes, dist15Accidentes, dist16Accidentes, dist17Accidentes, dist18Accidentes, dist19Accidentes, dist20Accidentes, dist21Accidentes)
resumen <- data.frame(distritos, accidentes)
resumen
##                         distritos accidentes
## 1  ARGANZUELA                             33
## 2  CENTRO                                124
## 3  SALAMANCA                              48
## 4  CIUDAD LINEAL                          26
## 5  LATINA                                 35
## 6  SAN BLAS                               24
## 7  VILLA DE VALLECAS                      15
## 8  RETIRO                                 52
## 9  FUENCARRAL-EL PARDO                    33
## 10 USERA                                  18
## 11 TETUAN                                 34
## 12 CHAMBERI                               51
## 13 MONCLOA-ARAVACA                        51
## 14 HORTALEZA                              22
## 15 VILLAVERDE                             12
## 16 CARABANCHEL                            36
## 17 CHAMARTIN                              26
## 18 MORATALAZ                              13
## 19 VICALVARO                              10
## 20 PUENTE DE VALLECAS                     29
## 21 BARAJAS                                 8

Cuartiles

# Cuartil 1 al 25%
q1 <- quantile(resumen$accidentes, 0.25) # al 25%
# Cuartil 3  al 75%
q3 <- quantile(resumen$accidentes, 0.75) # al 75%
q1
## 25% 
##  18
q3
## 75% 
##  36

Minimos y Maximos

minimos <- subset(resumen, accidentes <= q1)
maximos <- subset(resumen, accidentes >= q3)
minimos
##                         distritos accidentes
## 7  VILLA DE VALLECAS                      15
## 10 USERA                                  18
## 15 VILLAVERDE                             12
## 18 MORATALAZ                              13
## 19 VICALVARO                              10
## 21 BARAJAS                                 8
maximos
##                         distritos accidentes
## 2  CENTRO                                124
## 3  SALAMANCA                              48
## 8  RETIRO                                 52
## 12 CHAMBERI                               51
## 13 MONCLOA-ARAVACA                        51
## 16 CARABANCHEL                            36

Interpretacion de la practica

En esta practica se analizaron los accidentes en bicicleta del año 2018 por distrito, mediante los cuartiles al 25% se puede observar que el distrito con menos accidentes es Barajas con 8 accidentes y mediante el cuartil al 75% se observa que el distrito del centro es el distrito con mas accidentes con un total de 124.