Skip to content

Instantly share code, notes, and snippets.

@sergiospagnuolo
Last active April 15, 2020 15:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiospagnuolo/d76f1c41fea201c926bf141afc140dc4 to your computer and use it in GitHub Desktop.
Save sergiospagnuolo/d76f1c41fea201c926bf141afc140dc4 to your computer and use it in GitHub Desktop.
Análise de dados sobre congestionamento fornecidos pelo Banco Interamericano de Desenvolvimento
library(tidyverse)
library(clipr)
# BRASIL - GERAL
# média de distanciamento social
bid %>%
filter(data> '2020-03-15' & region_type == "country" & dia_semana != "domingo") %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por dia da semana
b <- bid %>%
filter(data> '2020-03-15' & region_type == "country") %>%
group_by(dia_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por período da semana (fim de semana ou dia da semana)
bid %>%
filter(data> '2020-03-15' & data < '2020-03-23' & region_type == "country") %>%
group_by(periodo_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# por período da semana com agrupamento por data
write_clip(bid %>%
filter(data> '2020-03-15' & region_type == "country") %>%
group_by(data, dia_semana, periodo_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100)))
# análise por semana
bid %>%
filter(data> '2020-03-15' & region_type == "country" & qual_semana != "semana 5 incompleta") %>%
group_by(qual_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100)) %>%
ggplot() + geom_bar(aes(qual_semana, media), stat = "identity", position = "dodge")
# análise por semana média móvel
a <- bid %>%
filter(region_type == "country" & qual_semana != "semana 5 incompleta") %>%
group_by(qual_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100)) %>%
# mutate(lag1=lag(media), lag2=lag(media,2), movave=(lag1+lag2)/2)
mutate(med_movel=rollapply(media,2,mean,align='right',fill=NA))
# análise sem dias de semana
bid %>%
filter(data> '2020-03-15' & region_type == "country" & periodo_semana == "fim de semana") %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# análise sem fins de semana
bid %>%
filter(data> '2020-03-15' & region_type == "country" & periodo_semana == "dia de semana") %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# SÃO PAULO
# média de distanciamento social
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "São Paulo") %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por dia da semana
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "São Paulo") %>%
group_by(dia_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por período da semana (fim de semana ou dia da semana)
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "São Paulo") %>%
group_by(periodo_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por período da semana com agrupamento por data
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "São Paulo") %>%
group_by(data, dia_semana, periodo_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# análise por semana
c <- bid %>%
filter(data > '2020-03-15' & region_type == "city") %>%
group_by(region_name, qual_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# RIO DE JANEIRO
# média de distanciamento social
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "Rio de Janeiro") %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por dia da semana
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "Rio de Janeiro") %>%
group_by(dia_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
# distanciamento social por período da semana (fim de semana ou dia da semana)
bid %>%
filter(data > '2020-03-15' & region_type == "city" & region_name == "Rio de Janeiro") %>%
group_by(periodo_semana) %>%
summarise(media = mean((ratio_20 - 1) * 100), mediana = median((ratio_20 - 1) * 100))
library(readr)
library(tidyverse)
# DADOS DE MOBILIDADE BID/WAZE
bid <- read_csv('https://docs.google.com/spreadsheets/d/16SIYidLScgFZOeqpHmAo_u_rFmuxxpCCWeRAXSDOT3I/export?format=csv&id')
# agrega datas
bid$data <- as.Date(paste0(2020,"-", bid$month,"-", bid$day))
bid$dia_semana <- ifelse(bid$dow == 1, "segunda",
ifelse(bid$dow == 2, "terça",
ifelse(bid$dow == 3, "quarta",
ifelse(bid$dow == 4, "quinta",
ifelse(bid$dow == 5, "sexta",
ifelse(bid$dow == 6, "sábado",
ifelse(bid$dow == 7, "domingo", ""
)))))))
bid$periodo_semana <- ifelse(bid$dia_semana == 'sábado' | bid$dia_semana == 'domingo', "fim de semana", "dia de semana")
bid$qual_semana <- ifelse(bid$data >= "2020-03-09" & bid$data <= "2020-03-15", "semana 0",
ifelse(bid$data >= "2020-03-16" & bid$data <= "2020-03-22", "semana 1",
ifelse(bid$data >= "2020-03-13" & bid$data <= "2020-03-29", "semana 2",
ifelse(bid$data >= "2020-03-30" & bid$data <= "2020-04-05", "semana 3",
ifelse(bid$data >= "2020-04-06" & bid$data <= "2020-04-12", "semana 4", "semana 5 incompleta"
)))))
# filtra apenas Brasil
bid <- bid %>% filter(country_name == "Brazil")
# DADOS DE MOBILIDADE GOOGLE
google <- read_csv('https://raw.githubusercontent.com/vitorbaptista/google-covid19-mobility-reports/master/data/processed/mobility_reports.csv')
# filtra apenas Brasil
google <- google %>% filter(region == "Brazil")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment