Objetivo: Esta práctica determina el número de accidentes por cada mes del año 2017 del conjunto de datos de bicitetas
Las librerías 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 numeric
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 quedndo 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 OCTBRE
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
# febrero$FECHA
# marzo$FECHA
lO QUE QUEREMOS ES CUANTOS DE CADlength(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 visualizar graficmente los datos
Utilizamos plot
plot(resumen, type="b")

barplot(resumen$No.Accidentes,
main = "Accidentes por mes",
xlab = "Meses",
ylab = "Accidentes",
#legend.text = mesesNombres,
# col = c(1:12),
names.arg = mesesNombres,
)
