Carregando dados, Manipulando e Visualizando

Author

Ricardo Accioly

Published

August 20, 2024

Entrada de dados no R

Lendo dados de arquivos xlsx

library(readxl)
dados_seg <- read_xlsx("indicadoressegurancapublicauf.xlsx", col_names = TRUE, sheet = "Ocorrências")
head(dados_seg)
#> # A tibble: 6 × 5
#>   UF    `Tipo Crime`                      Ano Mês     Ocorrências
#>   <chr> <chr>                           <dbl> <chr>         <dbl>
#> 1 Acre  Estupro                          2022 janeiro          31
#> 2 Acre  Furto de veículo                 2022 janeiro          50
#> 3 Acre  Homicídio doloso                 2022 janeiro          10
#> 4 Acre  Lesão corporal seguida de morte  2022 janeiro           0
#> 5 Acre  Roubo a instituição financeira   2022 janeiro           0
#> 6 Acre  Roubo de carga                   2022 janeiro           0
str(dados_seg)
#> tibble [20,686 × 5] (S3: tbl_df/tbl/data.frame)
#>  $ UF         : chr [1:20686] "Acre" "Acre" "Acre" "Acre" ...
#>  $ Tipo Crime : chr [1:20686] "Estupro" "Furto de veículo" "Homicídio doloso" "Lesão corporal seguida de morte" ...
#>  $ Ano        : num [1:20686] 2022 2022 2022 2022 2022 ...
#>  $ Mês        : chr [1:20686] "janeiro" "janeiro" "janeiro" "janeiro" ...
#>  $ Ocorrências: num [1:20686] 31 50 10 0 0 0 72 0 22 34 ...

Lendo dados de através de uma url

library(httr)
url <- "http://dados.mj.gov.br/dataset/210b9ae2-21fc-4986-89c6-2006eb4db247/resource/feeae05e-faba-406c-8a4a-512aec91a9d1/download/indicadoressegurancapublicauf.xlsx"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
#> Response [https://dados.mj.gov.br/dataset/210b9ae2-21fc-4986-89c6-2006eb4db247/resource/feeae05e-faba-406c-8a4a-512aec91a9d1/download/indicadoressegurancapublicauf.xlsx]
#>   Date: 2024-08-20 12:33
#>   Status: 200
#>   Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
#>   Size: 1.13 MB
#> <ON DISK>  C:\Users\ricar\AppData\Local\Temp\Rtmp8wweHY\file2a58498f3281.xlsx
segur <- read_xlsx(tf, sheet = "Ocorrências")
str(segur)
#> tibble [23,020 × 5] (S3: tbl_df/tbl/data.frame)
#>  $ UF         : chr [1:23020] "Acre" "Acre" "Acre" "Acre" ...
#>  $ Tipo Crime : chr [1:23020] "Estupro" "Furto de veículo" "Homicídio doloso" "Lesão corporal seguida de morte" ...
#>  $ Ano        : num [1:23020] 2022 2022 2022 2022 2022 ...
#>  $ Mês        : chr [1:23020] "janeiro" "janeiro" "janeiro" "janeiro" ...
#>  $ Ocorrências: num [1:23020] 31 50 10 1 0 0 72 0 22 34 ...
head(segur)
#> # A tibble: 6 × 5
#>   UF    `Tipo Crime`                      Ano Mês     Ocorrências
#>   <chr> <chr>                           <dbl> <chr>         <dbl>
#> 1 Acre  Estupro                          2022 janeiro          31
#> 2 Acre  Furto de veículo                 2022 janeiro          50
#> 3 Acre  Homicídio doloso                 2022 janeiro          10
#> 4 Acre  Lesão corporal seguida de morte  2022 janeiro           1
#> 5 Acre  Roubo a instituição financeira   2022 janeiro           0
#> 6 Acre  Roubo de carga                   2022 janeiro           0

Bibliotecas

Vamos carregar as bibliotecas que serão usadas na manipulação e visualização de dados.

O pacote tidyverse carrega diversos pacotes muito uteis na manipulação e visualização de dados

glimpse(dados_seg)
#> Rows: 20,686
#> Columns: 5
#> $ UF           <chr> "Acre", "Acre", "Acre", "Acre", "Acre", "Acre", "Acre", "…
#> $ `Tipo Crime` <chr> "Estupro", "Furto de veículo", "Homicídio doloso", "Lesão…
#> $ Ano          <dbl> 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 202…
#> $ Mês          <chr> "janeiro", "janeiro", "janeiro", "janeiro", "janeiro", "j…
#> $ Ocorrências  <dbl> 31, 50, 10, 0, 0, 0, 72, 0, 22, 34, 55, 10, 0, 0, 0, 48, …
unique(dados_seg$UF)
#>  [1] "Acre"                "Alagoas"             "Amapá"              
#>  [4] "Amazonas"            "Bahia"               "Ceará"              
#>  [7] "Distrito Federal"    "Espírito Santo"      "Goiás"              
#> [10] "Maranhão"            "Mato Grosso"         "Mato Grosso do Sul" 
#> [13] "Minas Gerais"        "Pará"                "Paraíba"            
#> [16] "Paraná"              "Pernambuco"          "Piauí"              
#> [19] "Rio Grande do Norte" "Rio Grande do Sul"   "Rondônia"           
#> [22] "Roraima"             "Santa Catarina"      "São Paulo"          
#> [25] "Sergipe"             "Tocantins"           "Rio de Janeiro"
library(summarytools)
dfSummary(dados_seg) |> stview(method = "render")

Data Frame Summary

dados_seg

Dimensions: 20686 x 5
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 UF [character]
1. Amazonas
2. Bahia
3. Ceará
4. Distrito Federal
5. Espírito Santo
6. Mato Grosso
7. Mato Grosso do Sul
8. Minas Gerais
9. Pará
10. Pernambuco
[ 17 others ]
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
774 ( 3.7% )
12946 ( 62.6% )
20686 (100.0%) 0 (0.0%)
2 Tipo Crime [character]
1. Estupro
2. Furto de veículo
3. Homicídio doloso
4. Lesão corporal seguida de
5. Roubo a instituição finan
6. Roubo de carga
7. Roubo de veículo
8. Roubo seguido de morte (l
9. Tentativa de homicídio
2313 ( 11.2% )
2316 ( 11.2% )
2319 ( 11.2% )
2296 ( 11.1% )
2268 ( 11.0% )
2229 ( 10.8% )
2316 ( 11.2% )
2315 ( 11.2% )
2314 ( 11.2% )
20686 (100.0%) 0 (0.0%)
3 Ano [numeric]
Mean (sd) : 2018.1 (2.1)
min ≤ med ≤ max:
2015 ≤ 2018 ≤ 2022
IQR (CV) : 4 (0)
2015 : 2879 ( 13.9% )
2016 : 2884 ( 13.9% )
2017 : 2893 ( 14.0% )
2018 : 2910 ( 14.1% )
2019 : 2891 ( 14.0% )
2020 : 2874 ( 13.9% )
2021 : 2893 ( 14.0% )
2022 : 462 ( 2.2% )
20686 (100.0%) 0 (0.0%)
4 Mês [character]
1. fevereiro
2. janeiro
3. abril
4. maio
5. outubro
6. setembro
7. junho
8. agosto
9. dezembro
10. julho
[ 2 others ]
1917 ( 9.3% )
1908 ( 9.2% )
1689 ( 8.2% )
1689 ( 8.2% )
1688 ( 8.2% )
1688 ( 8.2% )
1687 ( 8.2% )
1686 ( 8.2% )
1685 ( 8.1% )
1684 ( 8.1% )
3365 ( 16.3% )
20686 (100.0%) 0 (0.0%)
5 Ocorrências [numeric]
Mean (sd) : 206.5 (678.5)
min ≤ med ≤ max:
0 ≤ 34 ≤ 10518
IQR (CV) : 166 (3.3)
1558 distinct values 20686 (100.0%) 0 (0.0%)

Generated by summarytools 1.0.1 (R version 4.4.1)
2024-08-20

dados_segRJ <- dados_seg %>% filter(UF=="Rio de Janeiro")
summary(dados_segRJ)
#>       UF             Tipo Crime             Ano           Mês           
#>  Length:756         Length:756         Min.   :2015   Length:756        
#>  Class :character   Class :character   1st Qu.:2016   Class :character  
#>  Mode  :character   Mode  :character   Median :2018   Mode  :character  
#>                                        Mean   :2018                     
#>                                        3rd Qu.:2020                     
#>                                        Max.   :2021                     
#>   Ocorrências    
#>  Min.   :   0.0  
#>  1st Qu.:  10.0  
#>  Median : 335.0  
#>  Mean   : 683.3  
#>  3rd Qu.: 744.5  
#>  Max.   :5358.0
unique(dados_segRJ$`Tipo Crime`)
#> [1] "Estupro"                             "Furto de veículo"                   
#> [3] "Homicídio doloso"                    "Lesão corporal seguida de morte"    
#> [5] "Roubo a instituição financeira"      "Roubo de carga"                     
#> [7] "Roubo de veículo"                    "Roubo seguido de morte (latrocínio)"
#> [9] "Tentativa de homicídio"
dados_segRJ$`Tipo Crime` <- as.factor(dados_segRJ$`Tipo Crime`)
dados_segRJ %>% filter(`Tipo Crime`=="Homicídio doloso" ) %>% ggplot(aes(x=as.factor(Ano), y=Ocorrências)) + geom_boxplot() +
  labs(title="Homicídio doloso", x="Ano", y="Ocorrências")

dados_segRJ %>% filter(`Tipo Crime`=="Roubo de veículo" ) %>% ggplot(aes(x=as.factor(Ano), y=Ocorrências)) + geom_boxplot() +
  labs(title="Roubo de veículo", x="Ano", y="Ocorrências")

sintese_RJ <- dados_segRJ %>% group_by(Ano,`Tipo Crime`) %>% summarise(total = sum(Ocorrências))
sintese_RJ %>% ggplot(aes(x=Ano, y=total, color=`Tipo Crime`)) + geom_point() + geom_line() +
  labs(title="# de crimes no RJ", x="Ano", y="Ocorrências")