-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPF_Correios.Rmd
More file actions
107 lines (91 loc) · 3.58 KB
/
Copy pathPF_Correios.Rmd
File metadata and controls
107 lines (91 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
---
title: 'Mapa da Criminalidade: alvo correios'
date: "`r format(Sys.Date(),'%d/%m/%Y')`"
output:
prettydoc::html_pretty:
theme: architect
highlight: github
---
Banco de dados não disponível, pois os dados são confidenciais da Polícia Federal
```{r echo=FALSE, message=FALSE, warning=FALSE}
#install.packages("leaflet")
#install.packages("data.table")
#install.packages("tidyverse")
library(leaflet); library(data.table); library(tidyverse)
dados <- read.csv(file="...", encoding = "UTF-8")
```
```{r, eval=F}
dados <- read.csv(file="base_de_dados_em_sigilo")
```
```{r}
as_tibble(dados)
#Quais variáveis possuem dados em branco e quantas células em branco temos por variável:
sapply(dados, function(x) sum(is.na(x)))
```
Como os registros estão distribuídos por ano:
```{r}
#Separando por ano
dAnos <- dados %>% count(ano)
ano <- dAnos %>% pull(ano) %>% as.factor()
freq_ano <- dAnos %>% pull(n) #pull seleciona coluna e retorna como vetor
data.frame(ano, freq_ano, perc=round(100*freq_ano/sum(freq_ano),1))
p1 <- ggplot(data=data.frame(ano,freq_ano),aes(x=ano, y=freq_ano, fill=as.factor(freq_ano)))+
geom_bar(stat="identity", width=0.5,position="dodge")+
labs(x="Ano", y= "Frequência", title="Número de Assaltos aos Correios por ano", fill="Frequência por ano")
p1
```
```{r}
#Separando por dia da semana
dados_sem1 <- na.omit(dados %>% count(dia.semana))
dia <- c("1.Seg", "2.Ter", "3.Qua", "4.Qui", "5.Sex", "6.Sab", "7.Dom")
freq_dias <- c(dados_sem1 %>% pull(n))
data.frame(dia,freq_dias,perc=round(100*freq_dias/sum(freq_dias),1))
p2 <- ggplot(data=data.frame(dia,freq_dias),aes(x=dia, y=freq_dias, fill=as.factor(freq_dias)))+
geom_bar(stat="identity", width=0.5, position="dodge")+
labs(x="Dia da semana", y="Frequência", title="Número de Assaltos aos Correios", fill="Frequência por dia")
p2
#Omitindo os dados faltantes
ind <- is.na(dados$dia.semana)
dados1 <- dados[ind==FALSE,]
#criando correspondência entre dia da semana e o nome dos dias:
sem <- 1:7
nome.sem <- c("1.Segunda", "2.Terça", "3.Quarta", "4.Quinta", "5.Sexta", "6.Sábado", "7.Domingo")
names(sem) <- nome.sem
sem
dia.sem.name=names(sem)[dados1$dia.semana]
p3=ggplot(data=dados1,aes(x=as.factor(ano),fill=dia.sem.name))+
geom_bar(stat="count", width=0.5,position="dodge")+
labs(x="dia da semana", y= "frequencia", title="Número de Assaltos aos Correios", fill="Dias da semana")
p3
```
Agora vamos utilizar o pacote data.table que foi concebido para facilitar a tabulação dos dados.
Neste pacote podemos acessar rapidamente um subconjunto de dados, agrupá-los, atualizá-los e produzir tabelas.
Para instalar o pacote use: install.packages("data.table")
```{r}
dt=data.table(dados)
#Número de linhas
dt[,.N]
#Variáveis do banco de dados
names(dt)
#Quantos níveis distintos em cada variável:
sapply(dt, function(x) length(unique(x)))
#Quantos assaltos por município?
dt[,.N,by=Mun][order(-N)]
#Os seis bairros com maior ocorrência de assalto
head(dt[,.N,by=Bairro][order(-N)])
#Simulando as ocorrências de um universo de 1000 assaltos por amostragem sobre os seis bairros com maior ocorrência de assalto
head(dt[sample(1:.N,1000, replace=T), .(mean=mean(.N)), by=Bairro][order(-mean)])
#Contagem de assaltos por mês
na.omit(dt[,.N,by=substr(mês,1,12)][order(-N)])
#Contagem de assaltos por dia da semana
na.omit(dt[,.N,by=substr(dia.semana,1,7)][order(-N)])
```
```{r}
#Quantos bairros distintos?
dt %>% select(Bairro) %>% distinct() %>% nrow()
#Quantas ocorrencias em cada Bairro?
#modo1
dt %>% group_by(Bairro) %>% summarize(ocorrencia=n()) %>% arrange(desc(ocorrencia))
#modo2
dt %>% count(Bairro,sort=TRUE)
```