-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPAM_importação.R
executable file
·207 lines (181 loc) · 7.76 KB
/
PAM_importação.R
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#================== Produção Agrícola Municipal ===================#
# APRESENTAÇÂO: Script para análise dos dados da PAM, recolhidos através do SIDRA
# ATENÇÃO!! este script não é exatamente uma rotina, embora possa ser executado como uma
# ORIENTAÇÕES:
#...baixar os arquivos csv no site do SIDRA
#...no início da página do SIDRA, ajustar o layout com uma coluna por variável
#...ordenar as colunas: "Produto (...)" e "Valor" como as colunas 5ª e 6ª, respectivamente
#...armazene os arquivos dos dados a serem importados no diretório de trabalho
#=================================== INTRODUÇÃO =========================================#
# Pacotes utilizados----------------------------------------------------
pacotes <- c("tidyverse", "sidrar", "data.table", "openxlsx", "curl")
#install.packages(pacotes) #opcionalmente instalar o plotly
lapply(pacotes, library, character.only = TRUE)
# IMPORTAR TABELAS
## 1 AGREGADO - MG
## 2 AGREGADO - UF's
## 3 DESAGREGADO - MG
## 4 AGREGADO - Regiões Intermediárias
## 5 DESAGREGADO - BR (opcional; necessário "descomentar")
# ================================== IMPORTAR TABELAS =================================#
# 1 AGREGADO - MG-----------------------------------------------
## requisitos: pacotes utilizados
## importar tabela do sidra
MG_agr<- get_sidra(
5457,
variable = c(112,214,215,216),
period = c("last" = 17),
geo = "State",
geo.filter = list("State" = 31),
classific = "c782",
#category = "allxt",
header = TRUE,
format = 2
)
## renomear a coluna de categorias, facilitando filtros
names(MG_agr)[[5]] <- "Produto"
## adicionar uma coluna "Rank" que será útil mais a frente
MG_agr <- MG_agr %>%
group_by(Variável, Ano) %>%
mutate(
"Valorxt" = ifelse(Produto != 'Total', Valor, as.numeric(NA)),
"Rank" = frank(desc(Valorxt), na.last = "keep")
)
# 2 AGREGADO - UF's---------------------------------------------------------------
## requisitos: pacotes utilizados
## primeiro é preciso baixar as tabelas no SIDRA diretamente do R
### ATENÇÃO: esse arquivo só precisa ser baixado uma vez!!
curl_download(
url = "https://sidra.ibge.gov.br/geratabela?format=br.csv&name=tabela5457.csv&terr=NC&rank=-&query=t/5457/n3/all/v/112,214,215,216/p/last%2017/c782/all/l/,,t%2Bp%2Bv%2Bc782",
destfile = "t5457_UF.csv"
)
## então gerar a tabela a partir do arquivo csv baixado
UF_agr <- read.csv2("t5457_UF.csv", skip = 1, na.strings = c("-","..","..."))
## renomear coluna de Valor
colnames(UF_agr)[[6]] <- "Valor"
## renomear a coluna dos Produtos
colnames(UF_agr)[[5]] <- "Produto"
## criar coluna de ranks
#UF_agr <- UF_agr %>%
# group_by(Ano, Variável, `Unidade da Federação`)%>%
# mutate(
# "Valorxt" = ifelse(Produto != 'Total', Valor, as.numeric(NA)),
# "Rank" = rank(desc(Valorxt), na.last = "keep")
#)
### Obs: não é possível importar tabelas para as Regioões Intermediárias diretamente...
### ... antes vamos ter que importar os dados desagrados
# 3 DESAGREGADO - MG --------------------------------------------------------------
## requisitos: 3 DESAGREGADO - BR OU arquivo csv + pacotes utilizados
## podemos importar diretamente os dados ou filtrar os dados para o Brasil
# 3.1 Importando arquivo csv ........................................................
MG_mun <- bind_rows(
read.csv2("MG_mun1.csv",
skip = 1,
nrows = 2088144,
na.strings = c("..","...","-")),
read.csv2("MG_mun2.csv",
skip = 1,
nrows = 2088144,
na.strings = c("..","...","-"))
)
## renomear a coluna de valores
colnames(MG_mun)[[6]] <- "Valor"
## renomear a coluna de produtos
colnames(MG_mun)[[5]] <- "Produto"
## criar coluna com Ranks
#MG_mun <- MG_mun %>%
# group_by(Variável, Ano, Município) %>%
# mutate(
# "Valorxt" = ifelse(Produto != 'Total', Valor, as.numeric(NA)),
# "Rank" = frank(desc(Valorxt), na.last = "keep")
#)
# Criar coluna com as RegInts
## importar os dados para uma tabela
geo_cod <- read.xlsx("regints")
## criar as coluna
MG_mun <- MG_mun %>%
mutate(
"RegInt" = geo_cod$nome_rgint[match(MG_mun$Cód.,
geo_cod$CD_GEOCODI)],
"Cód.RegInt" = geo_cod$cod_rgint[match(MG_mun$Cód.,
geo_cod$CD_GEOCODI)]
)
## realocar as colunas criadas para o começo da tabela
MG_mun <- MG_mun %>%
relocate(
"Cód.RegInt", "RegInt",
.after = Município
)
# 4 AGREGADO (!) - Regiões Intermediárias (MG e BR) -------------------------------
## requisitos: 3 DESAGREGADO - BR OU 3 DESAGREGADO - MG + pacotes utilizados
## vamos gerar uma tabela para as RegInt's de MG; para realizar o mesmo processo...
##...para o Brasil, basta substituir MG_mun por BR_mun EM TODAS AS PRÓXIMAS LINHAS
### OBS: as outras tabelas já fornecem dados desagregados filtráveis por RegInt
regint_agr <- MG_mun %>%
group_by(Ano, Cód.RegInt, RegInt, Variável, Produto) %>%
summarise("Valor" = sum(Valor, na.rm = TRUE))
### criar coluna de ranks
#regint_agr <- regint_agr %>%
# mutate("Rank" = frank(desc(Valor), na.last = "keep"))
#
# 5 DESAGREGADO - BR ----------------------------------------------------------------
## requisitos: pacotes utilizados
## os dados desagregados para todos os municípios do Brasil são muitos, não ...
##...sendo possível importar todos de uma vez. É necessário baixar manualmente...
##...e então acessar os arquivos na memória do computador. A melhor forma que...
##...encontramos foi baixar um arquvo csv por ano, entre 2002 e 2008.
5.1 Importando as tabelas em uma lista ....................................
primeiro criar um vetor com os nomes das tabelas
nomes <- paste0("tab", "_", "5457", "_", 2002:2018) # ex: "tab_5457_2012"
#
criar uma lista que vamos preencher com as 17 tabelas importadas utilizando...
...as função read.csv2 em combinação com a função for
tabelas <- vector("list", 17)
for (i in 1:17) {
tabelas[[i]] <- read.csv2(file = paste0(nomes[[i]], ".csv"),
skip = 1, # pular linhas com as descrições das tabelas
nrows = 1602144, # não ler as notas
na.strings = c("-","..","...")) # NA's; ver notas no final da página: https://sidra.ibge.gov.br/tabela/5457
}
vamos nomear os itens da lista com os nomes das tabelas
names(tabelas) <- nomes
#
5.2 Formatando a tabela .................................................
criar uma tabela única com todos os dados de município (BR)
BR_mun <- bind_rows(
tabelas
)
renomear a coluna de valores
colnames(BR_mun)[[6]] <- "Valor"
renomear a coluna de produtos
colnames(BR_mun)[[5]] <- "Produto"
Criar colunas algumas colunas que serão úteis
primeiro baixar arquivo csv com os municípios por regint
curl_download(
url = "ftp://geoftp.ibge.gov.br/organizacao_do_territorio/divisao_regional/divisao_regional_do_brasil/divisao_regional_do_brasil_em_geo_cod_2017/tabelas/geo_cod_composicao_por_municipios_2017_20180911.xlsx",
destfile = "regints"
)
importar os dados para uma tabela
geo_cod <- read.xlsx("regints")
criar as coluna com a função mutate
BR_mun <- BR_mun %>%
mutate(
"UF" = str_sub(BR_mun$Município,-5.-2), # extrair a penúltima (-2) e a antepenúltima (-5. letras; ex: Cabixi (RO) --> RO
"RegInt" = geo_cod$nome_rgint[match(BR_mun$Cód.,
geo_cod$CD_GEOCODI)],
"Cód.RegInt" = geo_cod$cod_rgint[match(BR_mun$Cód.,
geo_cod$CD_GEOCODI)]
)
realocar as colunas criadas para o começo da tabela
BR_mun <- BR_mun %>%
relocate(
"Cód.RegInt", "RegInt", "UF",
.after = Município
)
criar coluna de ranks
BR_mun <- BR_mun %>%
group_by(Variável, Ano, Município)
mutate("Rank" = frank(desc(Valor), na.last = "keep"))
#
===================== FIM ===========================##
OBSERVAÇÃO: utilize o script "PAM_visualização" para gerar gráficos