Objetivo: Esta práctica determina el número de accidentes por cada mes del año 2017 del conjunto de datos de bicicletas

librerias necesarias

library(readr)  # La libreria

Cargar los datos que están en INTERNET

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

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

Definiendo nombres de columnas adecuados

# VAMOS A TRABAJAR CON bicis2017
names(bicis2017) # El nombre de aributo de FECHA está extraño
##  [1] "X.U.FEFF.FECHA"     "RANGO.HORARIO"      "DIA.SEMANA"        
##  [4] "DISTRITO"           "LUGAR.ACCIDENTE"    "Nº"                
##  [7] "Nº.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" "Nº.VICTIMAS.."      "TIPO.ACCIDENTE"    
## [22] "Tipo.Vehiculo"      "TIPO.PERSONA"       "SEXO"              
## [25] "LESIVIDAD"          "Tramo.Edad"
# Cambiamos el nombre de es atributo de bicis2017 y al 6, 7 y 20
columnas <- colnames(bicis2017)
columnas[1] <- "FECHA" # Cambia el nombre de columna
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(bicis2017) <- columnas
names(bicis2017) # 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 numerico

que define el numero de mes de la fecha

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

Así van quedando los datos

# bicis2017

Vamos a encontrar los accidentes por mes

enero <- subset(bicis2017, MES == 1)  # LOS DE ENERO
febrero <- subset(bicis2017, MES == 2)  # LOS DE FEBRERO
marzo <- subset(bicis2017, MES == 3)  # LOS DE MARZO
abril <- subset(bicis2017, MES == 4)  # LOS DE ABRIL
mayo <- subset(bicis2017, MES == 5)  # LOS DE MAYO
junio <- subset(bicis2017, MES == 6)  # LOS DE JUNIO
julio <- subset(bicis2017, MES == 7)  # LOS DE JULIO
agosto <- subset(bicis2017, MES == 8)  # LOS DE AGOSTO
septiembre <- subset(bicis2017, MES == 9)  # LOS DE SEPTIEMBRE
octubre <- subset(bicis2017, MES == 10)  # LOS DE OCTUBRE
noviembre <- subset(bicis2017, MES == 11)  # LOS DE NOVIEMBRE
diciembre <- subset(bicis2017, MES == 12)  # LOS DE DICIEMBRE

Mostramos algunos meses, solo el campo FECHA

enero$FECHA
##  [1] "2017-01-01" "2017-01-02" "2017-01-03" "2017-01-04" "2017-01-05"
##  [6] "2017-01-05" "2017-01-05" "2017-01-05" "2017-01-06" "2017-01-06"
## [11] "2017-01-07" "2017-01-07" "2017-01-07" "2017-01-08" "2017-01-08"
## [16] "2017-01-09" "2017-01-09" "2017-01-09" "2017-01-10" "2017-01-10"
## [21] "2017-01-10" "2017-01-12" "2017-01-12" "2017-01-12" "2017-01-12"
## [26] "2017-01-13" "2017-01-13" "2017-01-15" "2017-01-19" "2017-01-19"
## [31] "2017-01-20" "2017-01-20" "2017-01-21" "2017-01-21" "2017-01-22"
## [36] "2017-01-24" "2017-01-24" "2017-01-25" "2017-01-25" "2017-01-26"
## [41] "2017-01-26" "2017-01-27" "2017-01-29" "2017-01-31" "2017-01-31"
febrero$FECHA
##  [1] "2017-02-01" "2017-02-02" "2017-02-02" "2017-02-02" "2017-02-03"
##  [6] "2017-02-03" "2017-02-03" "2017-02-04" "2017-02-04" "2017-02-05"
## [11] "2017-02-06" "2017-02-07" "2017-02-07" "2017-02-07" "2017-02-08"
## [16] "2017-02-09" "2017-02-10" "2017-02-10" "2017-02-10" "2017-02-12"
## [21] "2017-02-13" "2017-02-14" "2017-02-14" "2017-02-14" "2017-02-14"
## [26] "2017-02-15" "2017-02-15" "2017-02-16" "2017-02-16" "2017-02-17"
## [31] "2017-02-18" "2017-02-18" "2017-02-19" "2017-02-19" "2017-02-19"
## [36] "2017-02-20" "2017-02-22" "2017-02-24" "2017-02-25" "2017-02-25"
## [41] "2017-02-25" "2017-02-25" "2017-02-27" "2017-02-28" "2017-02-28"
## [46] "2017-02-28" "2017-02-28" "2017-02-28" "2017-02-28"
marzo$FECHA
##  [1] "2017-03-01" "2017-03-02" "2017-03-03" "2017-03-03" "2017-03-03"
##  [6] "2017-03-05" "2017-03-06" "2017-03-07" "2017-03-07" "2017-03-07"
## [11] "2017-03-07" "2017-03-08" "2017-03-08" "2017-03-08" "2017-03-09"
## [16] "2017-03-09" "2017-03-09" "2017-03-09" "2017-03-10" "2017-03-10"
## [21] "2017-03-10" "2017-03-10" "2017-03-10" "2017-03-10" "2017-03-10"
## [26] "2017-03-12" "2017-03-13" "2017-03-14" "2017-03-14" "2017-03-15"
## [31] "2017-03-15" "2017-03-16" "2017-03-16" "2017-03-17" "2017-03-17"
## [36] "2017-03-17" "2017-03-18" "2017-03-19" "2017-03-19" "2017-03-20"
## [41] "2017-03-20" "2017-03-20" "2017-03-21" "2017-03-21" "2017-03-21"
## [46] "2017-03-21" "2017-03-21" "2017-03-22" "2017-03-23" "2017-03-23"
## [51] "2017-03-24" "2017-03-25" "2017-03-26" "2017-03-27" "2017-03-28"
## [56] "2017-03-29" "2017-03-30" "2017-03-31" "2017-03-31" "2017-03-31"
abril$FECHA
##  [1] "2017-04-01" "2017-04-02" "2017-04-02" "2017-04-02" "2017-04-03"
##  [6] "2017-04-03" "2017-04-04" "2017-04-05" "2017-04-05" "2017-04-06"
## [11] "2017-04-06" "2017-04-07" "2017-04-07" "2017-04-07" "2017-04-07"
## [16] "2017-04-07" "2017-04-07" "2017-04-08" "2017-04-09" "2017-04-09"
## [21] "2017-04-09" "2017-04-10" "2017-04-10" "2017-04-10" "2017-04-11"
## [26] "2017-04-12" "2017-04-12" "2017-04-12" "2017-04-13" "2017-04-13"
## [31] "2017-04-13" "2017-04-14" "2017-04-15" "2017-04-15" "2017-04-15"
## [36] "2017-04-15" "2017-04-16" "2017-04-17" "2017-04-20" "2017-04-21"
## [41] "2017-04-21" "2017-04-22" "2017-04-22" "2017-04-22" "2017-04-23"
## [46] "2017-04-23" "2017-04-23" "2017-04-23" "2017-04-24" "2017-04-24"
## [51] "2017-04-25" "2017-04-26" "2017-04-27" "2017-04-28"

Lo que queremos length(enero$FECHA) a mes Utilizamos la función length() para ver cuantos registros

length(enero$FECHA)
## [1] 45
length(febrero$FECHA)
## [1] 49
length(marzo$FECHA)
## [1] 60
length(abril$FECHA)
## [1] 54
length(mayo$FECHA)
## [1] 82
length(junio$FECHA)
## [1] 82
length(julio$FECHA)
## [1] 70
length(agosto$FECHA)
## [1] 47
length(septiembre$FECHA)
## [1] 85
length(octubre$FECHA)
## [1] 88
length(noviembre$FECHA)
## [1] 59
length(diciembre$FECHA)
## [1] 35

Construyendo un data frame mas elegante

mesesNombres <- c("Enero", "Febrero", "Marzo", "Abril",
                 "Mayo", "Junio", "Julio", "Agosto",
                 "Septiembre", "Octubre", "Noviembre", "Diciembre")
resumen <- data.frame(mesesNombres, c(length(enero$FECHA),
                  length(febrero$FECHA), length(marzo$FECHA),
                    length(abril$FECHA), length(mayo$FECHA),length(junio$FECHA),
length(julio$FECHA),
length(agosto$FECHA),
length(septiembre$FECHA),
length(octubre$FECHA),
length(noviembre$FECHA),
length(diciembre$FECHA)))

resumen
##    mesesNombres
## 1         Enero
## 2       Febrero
## 3         Marzo
## 4         Abril
## 5          Mayo
## 6         Junio
## 7         Julio
## 8        Agosto
## 9    Septiembre
## 10      Octubre
## 11    Noviembre
## 12    Diciembre
##    c.length.enero.FECHA...length.febrero.FECHA...length.marzo.FECHA...
## 1                                                                   45
## 2                                                                   49
## 3                                                                   60
## 4                                                                   54
## 5                                                                   82
## 6                                                                   82
## 7                                                                   70
## 8                                                                   47
## 9                                                                   85
## 10                                                                  88
## 11                                                                  59
## 12                                                                  35

Poniendo nombres de columnas a resumen y mostrar

colnames(resumen) <- c("Mes", "No.Accidentes")
resumen
##           Mes No.Accidentes
## 1       Enero            45
## 2     Febrero            49
## 3       Marzo            60
## 4       Abril            54
## 5        Mayo            82
## 6       Junio            82
## 7       Julio            70
## 8      Agosto            47
## 9  Septiembre            85
## 10    Octubre            88
## 11  Noviembre            59
## 12  Diciembre            35

vamos a vizualizar graficamente los datos

utilizamos plot

plot(resumen, type="b")

Graficado con leyenda

barplot(resumen$No.Accidentes, main = "Accidentes por mes", xlab = "Meses", ylab = "Accidentes", legend.text = mesesNombres)

Interpretacion de analisis

De acuerdo al conjunto de datos presentados se puede concluir que el mes de mayor incidencia de accidentes se presentan en el mes de octubre (88 accidentes); asi como lo de menor incidencia en el mes de diciembre (35 accidentes).