Notebook para criação de tabela de indicadores da PNS - módulo G 2019 Deficiências

Bibliotecas Utilizadas

In [6]:
#Lendo pacotes necessários
library(survey)
library(ggplot2)
library(dplyr)
library(foreign)
library(forcats)
library(tidyverse)

Carregando microdados da PNS

In [7]:
#Carregando banco de dados para R versão 3.5.0 ou superior
load("<coloque aqui o caminho para o arquivo dos microdados formato RDATA PNS 2019>")

#conferindo as dimensões (número de linhas e colunas)
dim("<Coloque aqui o nome do arquivo RDATA PNS 2019>")
  1. 293726
  2. 1087

Definição do peso e filtragem de respondentes do questionário

In [8]:
#Selecionando registros válidos e calculando peso amostral - summary de verificação
pns2019.1<- <Coloque aqui o nome do arquivo RDATA> %>% mutate(peso_moradores=((V00281*279382/209589607))) 
pns2019.1<-pns2019.1 %>% filter(!is.na(peso_moradores))
summary(pns2019.1$peso_moradores)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.01046  0.31515  0.58914  1.00000  1.16920 39.99838 

Criação de variáveis dos indicadores

In [9]:
#Desfechos - Indicadores
#Pessoas com deficiência em pelo menos uma de suas funções  - G001P
pns2019.1 <- pns2019.1 %>% mutate(G001P= if_else(G046 == 3 | G046 == 4 | G047 == 3 | G047 == 4 | G057 == 3 | G057 == 4 | G058 == 3 | G058 == 4 |
                                                 G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4 | G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 |
                                                 G081 == 3 | G081 == 4 | G082 == 3 | G082 == 4 | G083 == 3 | G083 == 4, 1,2,missing=2))
pns2019.1$G001P<-factor(pns2019.1$G001P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2019.1$G001P)


#Pessoas com deficiência visual - G002P
pns2019.1 <- pns2019.1 %>% mutate(G002P= if_else(G046 == 3 | G046 == 4 | G047 == 3 | G047 == 4, 1,2,missing=2))
pns2019.1$G002P<-factor(pns2019.1$G002P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G002P_aux<-factor(pns2019.1$G002P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G002P_aux<-as.numeric(as.character(pns2019.1$G002P_aux))
summary(pns2019.1$G002P)


#Pessoas com deficiência auditiva - G003P
pns2019.1 <- pns2019.1 %>% mutate(G003P= if_else(G057 == 3 | G057 == 4 | G058 == 3 | G058 == 4, 1,2,missing=2))
pns2019.1$G003P<-factor(pns2019.1$G003P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G003P_aux<-factor(pns2019.1$G003P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G003P_aux<-as.numeric(as.character(pns2019.1$G003P_aux))
summary(pns2019.1$G003P)



#Pessoas com deficiência motora (membros inferiores ou superiores) - G004P
pns2019.1 <- pns2019.1 %>% mutate(G004P= if_else(G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4 | G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 |
                                                G081 == 3 | G081 == 4 | G082 == 3 | G082 == 4, 1,2,missing=2))
pns2019.1$G004P<-factor(pns2019.1$G004P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G004P_aux<-factor(pns2019.1$G004P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G004P_aux<-as.numeric(as.character(pns2019.1$G004P_aux))
summary(pns2019.1$G004P)




# Pessoas com deficiência mental ou intelectual l - G005P
pns2019.1 <- pns2019.1 %>% mutate(G005P= if_else(G083 == 3 | G083 == 4, 1,2,missing=2))
pns2019.1$G005P<-factor(pns2019.1$G005P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G005P_aux<-factor(pns2019.1$G005P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G005P_aux<-as.numeric(as.character(pns2019.1$G005P_aux))
summary(pns2019.1$G005P)



# Pessoas com deficiência múltipla  - G006P
pns2019.1 <- pns2019.1 %>% mutate(G006P= if_else((G002P_aux + G003P_aux + G004P_aux + G005P_aux) >= 2, 1,2,missing=2))
pns2019.1$G006P<-factor(pns2019.1$G006P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G006P)



# Pessoas com deficiência que receberam cuidado regular em reabilitação nos últimos 12 meses - G007P
pns2019.1 <- pns2019.1 %>% mutate(G007P= ifelse(G084 == 1, 1,
                                                ifelse(G084 == 2,2,2)))  
pns2019.1$G007P<-factor(pns2019.1$G007P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G007P)


# Pessoas com deficiência que receberam cuidado regular em reabilitação no SUS nos últimos 12 meses - G008P
pns2019.1 <- pns2019.1 %>% mutate(G008P= ifelse(G086 == 1,1,
                                          ifelse(G084 == 1,2,2)))   
pns2019.1$G008P<-factor(pns2019.1$G008P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G008P)


# Uso de equipamento de auxílio obtido no SUS - G009P
pns2019.1 <- pns2019.1 %>% mutate(G009P= case_when(G035 == 1 | G039 == 1 | G041 == 1 | G050 == 1 | G052 == 1 | G054 == 1 | G061 == 1 | G063 == 1 | G065 == 1 | 
                                                 G067 == 1 | G074 == 1 | G076 == 1~1,
                                                 G034 == 1 | G038 == 1 | G040 == 1 | G049 == 1 | G051 == 1 | G053 == 1 | G060 == 1 | G062 == 1 | G064 == 1 |
                                                 G066 == 1 | G073 == 1 | G075 == 1~2))   
pns2019.1$G009P<-factor(pns2019.1$G009P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G009P)


# Uso de equipamento para  audição - G010P
pns2019.1 <- pns2019.1 %>% mutate(G010P= if_else(G048 == 1, 1,2,missing=2))
pns2019.1$G010P<-factor(pns2019.1$G010P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G010P)




# Uso de equipamento de auxílio para locomoção ou para membros superiores - G011P
pns2019.1 <- pns2019.1 %>% mutate(G011P= if_else(G059 == 1 | G072 == 1, 1,2,missing=2))
pns2019.1$G011P<-factor(pns2019.1$G011P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G011P)



#  Uso de óculos ou outro equipamento para visão  - G012P
pns2019.1 <- pns2019.1 %>% mutate(G012P= if_else(G033 == 1, 1,2,missing=2))
pns2019.1$G012P<-factor(pns2019.1$G012P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G012P)



#  Pessoas com deficiência motora (membros inferiores) - G013P
pns2019.1 <- pns2019.1 %>% mutate(G013P= if_else(G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4, 1,2,missing=2))
pns2019.1$G013P<-factor(pns2019.1$G013P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G013P)


#  Pessoas com deficiência motora (membros superiores) - G014P
pns2019.1 <- pns2019.1 %>% mutate(G014P= if_else(G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 | G081 == 3 | 
                                                G081 == 4 | G082 == 3 | G082 == 4, 1,2,missing=2))
pns2019.1$G014P<-factor(pns2019.1$G014P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G014P)


#  Uso de equipamento de auxílio  para locomoção - G015P
pns2019.1 <- pns2019.1 %>% mutate(G015P= if_else(G059 == 1, 1,2,missing=2))
pns2019.1$G015P<-factor(pns2019.1$G015P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G015P)

#  Uso de equipamento de auxílio  para membros superiores - G016P
pns2019.1 <- pns2019.1 %>% mutate(G016P= if_else(G072 == 1, 1,2,missing=2))
pns2019.1$G016P<-factor(pns2019.1$G016P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G016P)
Sim
22887
Não
256495
Sim
9837
Não
269545
Sim
3071
Não
276311
Sim
12648
Não
266734
Sim
3198
Não
276184
Sim
4935
Não
274447
Sim
9997
Não
60409
NA's
208976
Sim
5272
Não
4725
NA's
269385
Sim
5713
Não
93652
NA's
180017
Sim
2017
Não
277365
Sim
5297
Não
274085
Sim
101134
Não
178248
Sim
9772
Não
269610
Sim
6773
Não
272609
Sim
4173
Não
275209
Sim
1288
Não
278094

Definições de abrangências

Situação urbana ou rural

In [10]:
#Situação Urbano ou Rural
pns2019.1 <- pns2019.1 %>% rename(Situação_Urbano_Rural=V0026)
pns2019.1$Situação_Urbano_Rural<-factor(pns2019.1$Situação_Urbano_Rural, levels=c(1,2), labels=c("Urbano", "Rural"))
summary(pns2019.1$Situação_Urbano_Rural)
Urbano
212286
Rural
67096

Sexo

In [11]:
#Sexo
pns2019.1 <- pns2019.1 %>% rename(Sexo=C006)
pns2019.1$Sexo<-factor(pns2019.1$Sexo, levels=c(1,2), labels=c("Masculino", "Feminino"))
summary(pns2019.1$Sexo)
Masculino
134442
Feminino
144940

UF

In [12]:
#Estados - UFs
pns2019.1 <- pns2019.1 %>% rename(Unidades_da_Federação=V0001)
pns2019.1$Unidades_da_Federação<-factor(pns2019.1$Unidades_da_Federação, levels=c(11,12,13,14,15,16,17,21,22,23,24,25,26,27,28,29,31,32,33,35,41,42,43,50,51,52,53),
                                       label=c("Rondônia","Acre","Amazonas","Roraima","Pará","Amapá","Tocantins","Maranhão","Piauí","Ceará",
                                        "Rio Grande do Norte","Paraíba","Pernambuco","Alagoas","Sergipe","Bahia",
                                        "Minas Gerais","Espírito Santo","Rio de Janeiro","São Paulo",
                                        "Paraná","Santa Catarina","Rio Grande do Sul", 
                                        "Mato Grosso do Sul","Mato Grosso","Goiás","Distrito Federal"))
summary(pns2019.1$Unidades_da_Federação)
Rondônia
7037
Acre
7808
Amazonas
12642
Roraima
7995
Pará
13475
Amapá
6363
Tocantins
6127
Maranhão
17327
Piauí
8745
Ceará
14157
Rio Grande do Norte
9472
Paraíba
9652
Pernambuco
11934
Alagoas
9947
Sergipe
7803
Bahia
10516
Minas Gerais
14831
Espírito Santo
10078
Rio de Janeiro
13909
São Paulo
17522
Paraná
11237
Santa Catarina
10123
Rio Grande do Sul
9878
Mato Grosso do Sul
8350
Mato Grosso
7291
Goiás
8003
Distrito Federal
7160

Grandes Regiões

In [13]:
#Grandes Regiões
pns2019.1 <- pns2019.1 %>% 
  mutate(GrandesRegioes = fct_collapse(Unidades_da_Federação, 
                                          `Norte` = c("Rondônia","Acre","Amazonas","Roraima","Pará", "Amapá","Tocantins"),
                                          `Nordeste` = c("Maranhão", "Piauí", "Ceará", "Rio Grande do Norte", "Paraíba","Pernambuco", "Alagoas","Sergipe","Bahia"),
                                          `Sudeste` = c("Minas Gerais", "Espírito Santo","Rio de Janeiro", "São Paulo"), 
                                          `Sul` = c("Paraná", "Santa Catarina", "Rio Grande do Sul"),
                                          `Centro-Oeste`= c("Mato Grosso do Sul","Mato Grosso", "Goiás", "Distrito Federal")))
summary(pns2019.1$GrandesRegioes)
Norte
61447
Nordeste
99553
Sudeste
56340
Sul
31238
Centro-Oeste
30804

Capital

In [14]:
#Capital
pns2019.1<- pns2019.1 %>% mutate(Capital= fct_collapse(Unidades_da_Federação,
                                        `Porto Velho`= "Rondônia", 
                                        `Boa Vista`= "Roraima",              
                                        `Rio Branco`= "Acre", 
                                        `Manaus` = "Amazonas",
                                        `Belém` = "Pará" ,
                                        `Macapá`= "Amapá",
                                        `Palmas` = "Tocantins",
                                        `São Luís` = "Maranhão",
                                        `Teresina`= "Piauí" ,
                                        `Fortaleza`= "Ceará",
                                        `Natal`= "Rio Grande do Norte",
                                        `João Pessoa`= "Paraíba",
                                        `Recife`= "Pernambuco",
                                        `Maceió`= "Alagoas",
                                        `Aracaju`= "Sergipe",
                                        `Salvador`= "Bahia",
                                        `Belo Horizonte`= "Minas Gerais",
                                        `Vitória`= "Espírito Santo",
                                        `Rio de Janeiro`= "Rio de Janeiro",
                                        `São Paulo`= "São Paulo",
                                        `Curitiba`= "Paraná",
                                        `Florianópolis`= "Santa Catarina",
                                        `Porto Alegre`= "Rio Grande do Sul",
                                        `Campo Grande`=  "Mato Grosso do Sul",
                                        `Cuiabá`= "Mato Grosso",
                                        `Goiânia` = "Goiás",
                                        `Brasília`= "Distrito Federal"))
summary(pns2019.1$Capital)
Porto Velho
7037
Rio Branco
7808
Manaus
12642
Boa Vista
7995
Belém
13475
Macapá
6363
Palmas
6127
São Luís
17327
Teresina
8745
Fortaleza
14157
Natal
9472
João Pessoa
9652
Recife
11934
Maceió
9947
Aracaju
7803
Salvador
10516
Belo Horizonte
14831
Vitória
10078
Rio de Janeiro
13909
São Paulo
17522
Curitiba
11237
Florianópolis
10123
Porto Alegre
9878
Campo Grande
8350
Cuiabá
7291
Goiânia
8003
Brasília
7160

Faixa Etária

In [15]:
#Faixas Etárias
pns2019.1 <-  pns2019.1 %>% mutate(faixa_idade=cut(C008,
  breaks = c(2,10,18, 30, 40, 50,65,Inf),
  labels = c("2 a 9 anos" ,"10 a 17 anos", "18 a 29 anos" , "30 a 39 anos" , "40 a 49 anos" , "50 a 64 anos" ,  "65 anos ou mais"), 
  ordered_result = TRUE, right = FALSE))
summary(pns2019.1$faixa_idade)
2 a 9 anos
30055
10 a 17 anos
34599
18 a 29 anos
50010
30 a 39 anos
41873
40 a 49 anos
38538
50 a 64 anos
47237
65 anos ou mais
30187
NA's
6883

Raça

In [16]:
#Raça
pns2019.1 <- pns2019.1 %>% mutate(Raca= ifelse(C009==1, 1, 
                        ifelse(C009==2, 2, 
                            ifelse(C009==4, 3, 9))))

pns2019.1$Raca<-factor(pns2019.1$Raca, levels=c(1,2,3),labels=c("Branca", "Preta", "Parda"))

summary(pns2019.1$Raca)
Branca
99019
Preta
28304
Parda
148273
NA's
3786

Renda per capita

In [17]:
#Rendimento domiciliar per capita

pns2019.1 <- pns2019.1 %>% mutate(rend_per_capita = ifelse(VDF004 %in% 1:2, 1, 
                        ifelse(VDF004%in% 3, 2, 
                        ifelse(VDF004%in% 4, 3,
                        ifelse(VDF004%in% 5, 4,
                        ifelse(VDF004==9,"NA",5))))))

pns2019.1$rend_per_capita<-factor(pns2019.1$rend_per_capita, levels=c(1,2,3,4,5), labels=c("Até 1/2 SM","1/2 até 1 SM","1 até 2 SM",
                                                                                   "2 até 3 SM","Mais de 3 SM"))
summary(pns2019.1$rend_per_capita)
Até 1/2 SM
91898
1/2 até 1 SM
81830
1 até 2 SM
61643
2 até 3 SM
19369
Mais de 3 SM
24470
NA's
172

Criando indicadores

Filtrando base de indicadores

In [18]:
#Selecionando variáveis para cálculo de indicadores no survey
pns2019Gsurvey<- pns2019.1 %>% select("V0024","UPA_PNS","peso_moradores","C008","V0031","VDF004","G001P","G002P","G003P","G004P","G005P",
                                     "G006P","G007P","G008P","G009P","G010P","G011P","G012P","G013P","G014P","G015P","G016P",
                                     "Situação_Urbano_Rural","Sexo","Unidades_da_Federação", "GrandesRegioes",
                                     "Capital","faixa_idade", "Raca","rend_per_capita")
summary(pns2019Gsurvey)
     V0024             UPA_PNS       peso_moradores          C008       
 1210010:  3484   130033536:    94   Min.   : 0.01046   Min.   :  0.00  
 1410011:  2961   160007292:    91   1st Qu.: 0.31515   1st Qu.: 17.00  
 2710111:  2484   140004603:    88   Median : 0.58914   Median : 34.00  
 2410011:  2364   140002449:    86   Mean   : 1.00000   Mean   : 35.27  
 1250020:  2329   140008399:    85   3rd Qu.: 1.16920   3rd Qu.: 52.00  
 1610111:  2198   160006905:    84   Max.   :39.99838   Max.   :112.00  
 (Other):263562   (Other)  :278854                                      
     V0031           VDF004      G001P        G002P        G003P       
 Min.   :1.000   Min.   :1.000   Sim: 22887   Sim:  9837   Sim:  3071  
 1st Qu.:1.000   1st Qu.:2.000   Não:256495   Não:269545   Não:276311  
 Median :2.000   Median :3.000                                         
 Mean   :2.608   Mean   :3.197                                         
 3rd Qu.:4.000   3rd Qu.:4.000                                         
 Max.   :4.000   Max.   :7.000                                         
                 NA's   :172                                           
 G004P        G005P        G006P         G007P         G008P       
 Sim: 12648   Sim:  3198   Sim:  4935   Sim :  9997   Sim :  5272  
 Não:266734   Não:276184   Não:274447   Não : 60409   Não :  4725  
                                        NA's:208976   NA's:269385  
                                                                   
                                                                   
                                                                   
                                                                   
  G009P        G010P        G011P        G012P        G013P        G014P       
 Sim :  5713   Sim:  2017   Sim:  5297   Sim:101134   Sim:  9772   Sim:  6773  
 Não : 93652   Não:277365   Não:274085   Não:178248   Não:269610   Não:272609  
 NA's:180017                                                                   
                                                                               
                                                                               
                                                                               
                                                                               
 G015P        G016P        Situação_Urbano_Rural        Sexo       
 Sim:  4173   Sim:  1288   Urbano:212286         Masculino:134442  
 Não:275209   Não:278094   Rural : 67096         Feminino :144940  
                                                                   
                                                                   
                                                                   
                                                                   
                                                                   
    Unidades_da_Federação      GrandesRegioes            Capital      
 São Paulo     : 17522    Norte       :61447   São Paulo     : 17522  
 Maranhão      : 17327    Nordeste    :99553   São Luís      : 17327  
 Minas Gerais  : 14831    Sudeste     :56340   Belo Horizonte: 14831  
 Ceará         : 14157    Sul         :31238   Fortaleza     : 14157  
 Rio de Janeiro: 13909    Centro-Oeste:30804   Rio de Janeiro: 13909  
 Pará          : 13475                         Belém         : 13475  
 (Other)       :188161                         (Other)       :188161  
       faixa_idade        Raca            rend_per_capita 
 18 a 29 anos:50010   Branca: 99019   Até 1/2 SM  :91898  
 50 a 64 anos:47237   Preta : 28304   1/2 até 1 SM:81830  
 30 a 39 anos:41873   Parda :148273   1 até 2 SM  :61643  
 40 a 49 anos:38538   NA's  :  3786   2 até 3 SM  :19369  
 10 a 17 anos:34599                   Mais de 3 SM:24470  
 (Other)     :60242                   NA's        :  172  
 NA's        : 6883                                       

Exporta tabela filtrada com os dados específicos - Módulo G 2019

In [20]:
#Salvando csv para cálculo de indicadores no survey
diretorio_saida <- "<coloque aqui o diretório>"
write.csv(pns2019Gsurvey, file.path(path, "pns2019Gsurvey.csv"))

Cria plano amostral complexo

In [21]:
#survey design
desPNSG    = svydesign(id=~UPA_PNS, strat=~V0024, weight=~peso_moradores, nest=TRUE, data=pns2019Gsurvey)
In [22]:
#subdesigns gerais
desPNSG2   = subset(desPNSG, C008>=2)
desPNSG_C2 = subset(desPNSG, C008>=2 & V0031==1)
desPNSG_RE = subset(desPNSG, C008>=2 & VDF004!=9)
desPNSG_R2 = subset(desPNSG, C008>=2 & !is.na(Raca))
In [23]:
#survey design - G007P
desPNSGG007P2 = subset(desPNSG,   C008>=2 & !is.na(G007P))
desPNSGG007P_C2 = subset(desPNSG, C008>=2 & !is.na(G007P) & V0031==1)
desPNSGG007P_RE = subset(desPNSG, C008>=2 & !is.na(G007P) & VDF004!=9)
desPNSG007P_R2  = subset(desPNSG, C008>=2 & !is.na(G007P) & !is.na(Raca))
In [24]:
#survey design - G008P
desPNSGG008P2 = subset(desPNSG,   C008>=2 & !is.na(G008P))
desPNSGG008P_C2 = subset(desPNSG, C008>=2 & !is.na(G008P) & V0031==1)
desPNSGG008P_RE = subset(desPNSG, C008>=2 & !is.na(G008P) & VDF004!=9)
desPNSG008P_R2  = subset(desPNSG, C008>=2 & !is.na(G008P) & !is.na(Raca))
In [25]:
#survey design - G009P
desPNSGG009P2 = subset(desPNSG, C008>=2 & !is.na(G009P))
desPNSGG009P_C2 = subset(desPNSG, C008>=2 & !is.na(G009P) & V0031==1)
desPNSGG009P_RE = subset(desPNSG, C008>=2 & !is.na(G009P) & VDF004!=9)
desPNSG009P_R2  = subset(desPNSG, C008>=2 & !is.na(G009P) & !is.na(Raca))

Criação da tabela de indicadores

Essa tabela é responsável por unir os indicadores no formato do painel de indicadores

In [26]:
matrizIndicadores = data.frame()

Definição de variáveis para iteração dos indicadores

In [27]:
ListaIndicadores = c(~G001P,~G002P,~G003P,~G004P,~G005P,~G006P,~G007P,~G008P,~G009P,~G010P,~G011P,~G012P,~G013P,~G014P,~G015P,~G016P)
ListaIndicadoresTexto = c("G001P","G002P","G003P","G004P","G005P","G006P","G007P","G008P","G009P","G010P","G011P","G012P","G013P","G014P","G015P","G016P")
ListaDominios = c(~Sexo,~Raca,~rend_per_capita,~faixa_idade,~Situação_Urbano_Rural,~Unidades_da_Federação,~GrandesRegioes,~Capital)
ListaDominiosTexto = c("Sexo","raça","rend_per_capita","fx_idade_def","urb_rur","uf","região","capital")
ListaTotais = c('Brasil','Capital')
Ano <- "2019"

Preenchendo a tabela de indicadores

Essas iterações rodam por indicador, abrangência e por design

In [28]:
#Cálculo dos indicadores usando o pacote survey 
i <- 0
#Para cada indicador
for( indicador in ListaIndicadores){
    i <- i + 1
    j <- 1
for (dominio in ListaDominios){
               #design especifico para capital que é subconjunto do dataframe total
               if (ListaDominiosTexto[j]=="capital"){
                   if (ListaIndicadoresTexto[i]=="G007P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P_C2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G008P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P_C2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G009P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P_C2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G016P"){
                           next
                   }
                   else{
                       dataframe_indicador<-svyby(indicador , dominio , desPNSG_C2 , svymean,vartype= c("ci","cv"))
                   }
                  
                }
               #Uso design do subconjunto para raça/cor que inclui preta,branca e parda as outras 
               #não possuiam dados suficientes para os dominios dos indicadores
               else if (ListaDominiosTexto[j]=="raça"){
                   if (ListaIndicadoresTexto[i]=="G007P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSG007P_R2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G008P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSG008P_R2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G009P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSG009P_R2 , svymean,vartype= c("ci","cv"))
                   }
                   else{
                       dataframe_indicador<-svyby(indicador , dominio , desPNSG_R2 , svymean,vartype= c("ci","cv"))
                   }
                }
               #Uso design do subconjunto para renda que exclui valores NULOS 
               else if (ListaDominiosTexto[j]=="rend_per_capita"){
                   if (ListaIndicadoresTexto[i]=="G007P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P_RE , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G008P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P_RE , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G009P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P_RE , svymean,vartype= c("ci","cv"))
                   }
                   else{
                       dataframe_indicador<-svyby(indicador , dominio , desPNSG_RE , svymean,vartype= c("ci","cv"))
                   }
                }
               #design geral para o subconjunto maior que 2 anos    
               else {
                   if (ListaIndicadoresTexto[i]=="G007P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G008P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P2 , svymean,vartype= c("ci","cv"))
                   }
                   else if (ListaIndicadoresTexto[i]=="G009P"){
                           dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P2 , svymean,vartype= c("ci","cv"))
                   }
                   else{
                       dataframe_indicador<-svyby(indicador , dominio , desPNSG2 , svymean,vartype= c("ci","cv"))
                   }
                 
               }
               #União do dataframe de indicadores no formato do painel disponibilizado para PNS
               dataframe_indicador<-data.frame(dataframe_indicador)
               colnames(dataframe_indicador) <- c("abr_nome","Sim","Não","LowerS","LowerN","UpperS","UpperN","cvS","cvN")
               dataframe_indicador$Indicador <- ListaIndicadoresTexto[i]
               dataframe_indicador$abr_tipo <- ListaDominiosTexto[j]
               dataframe_indicador$Ano <- Ano
               dataframe_indicador <- dataframe_indicador %>% select("abr_tipo","abr_nome","Ano","Indicador","Sim","LowerS","UpperS","cvS")
               matrizIndicadores <-rbind(matrizIndicadores,dataframe_indicador)
               j <- j + 1
               
    }

}

Criando a tabela pela abrangência total

In [29]:
matriz_totais <- data.frame()

Preenchendo a tabela com as abrangencia Brasil e total das capitais

In [30]:
i=0
for(indicador in ListaIndicadores){
    i <- i+1
    for(total in ListaTotais){
        dataframe_indicador <- data.frame()
        dataframe_indicador_S <- data.frame()
        if(total == 'Capital'){
            if (ListaIndicadoresTexto[i] == "G007P"){
                dataframe_indicador <- svymean(indicador,desPNSGG007P_C2)
            }
            else if (ListaIndicadoresTexto[i] == "G008P"){
                dataframe_indicador <- svymean(indicador,desPNSGG008P_C2)
            }
            else if (ListaIndicadoresTexto[i] == "G009P"){
                dataframe_indicador <- svymean(indicador,desPNSGG009P_C2)
            }
            else {
                dataframe_indicador <- svymean(indicador,desPNSG_C2)
            }
                
        }
        else{
             if (ListaIndicadoresTexto[i] == "G007P"){
                dataframe_indicador <- svymean(indicador,desPNSGG007P2)
            }
            else if (ListaIndicadoresTexto[i] == "G008P"){
                dataframe_indicador <- svymean(indicador,desPNSGG008P2)
            }
            else if (ListaIndicadoresTexto[i] == "G009P"){
                dataframe_indicador <- svymean(indicador,desPNSGG009P2)
            }
            else {
                dataframe_indicador <- svymean(indicador,desPNSG2)
            }
        }
        intervalo_confianca <- confint(dataframe_indicador)
        coeficiente_variacao <- cv(dataframe_indicador)
        dataframe_indicador <- cbind(data.frame(dataframe_indicador),data.frame(intervalo_confianca))
        dataframe_indicador <- cbind(data.frame(dataframe_indicador),data.frame(coeficiente_variacao))
        
        dataframe_indicador <- dataframe_indicador %>% 
                               select('mean','X2.5..','X97.5..',coeficiente_variacao) 
        dataframe_indicador_S <- dataframe_indicador %>% 
                                 slice(1)
                
        colnames(dataframe_indicador_S) <- c('Sim','LowerS','UpperS', 'cvS')
        dataframe_indicador_S <- dataframe_indicador_S %>% 
                               select('Sim','LowerS','UpperS','cvS')
        dataframe_indicador_S$Indicador <- ListaIndicadoresTexto[i]
        dataframe_indicador_S$abr_tipo <- "total"
        dataframe_indicador_S$abr_nome <- total
        dataframe_indicador_S$Ano <- Ano 
        dataframe_indicador_S <- dataframe_indicador_S %>% 
                             select("abr_tipo","abr_nome","Ano","Indicador","Sim","LowerS","UpperS",'cvS')
        
        matriz_totais <-rbind(matriz_totais,dataframe_indicador_S)
        
    }
}

Unindo tabela de indicadores e de totais

In [31]:
matrizIndicadores<-rbind(matrizIndicadores,matriz_totais)

Visualizando tabela de indicadores

In [32]:
matrizIndicadores
A data.frame: 1253 × 8
abr_tipoabr_nomeAnoIndicadorSimLowerSUpperScvS
<chr><fct><chr><chr><dbl><dbl><dbl><dbl>
MasculinoSexo Masculino 2019G001P0.068762990.066264560.071261420.01853804
FemininoSexo Feminino 2019G001P0.098530170.095614080.101446260.01510021
Brancaraça Branca 2019G001P0.079995050.076779330.083210780.02051011
Pretaraça Preta 2019G001P0.097014620.091004750.103024500.03160677
Pardaraça Parda 2019G001P0.085269140.082511220.088027050.01650215
Até 1/2 SMrend_per_capitaAté 1/2 SM 2019G001P0.080355960.076786590.083925340.02266346
1/2 até 1 SMrend_per_capita1/2 até 1 SM 2019G001P0.107168530.103038460.111298590.01966264
1 até 2 SMrend_per_capita1 até 2 SM 2019G001P0.081893910.077732770.086055040.02592460
2 até 3 SMrend_per_capita2 até 3 SM 2019G001P0.063223680.057048980.069398370.04982963
Mais de 3 SMrend_per_capitaMais de 3 SM 2019G001P0.052521310.047376040.057666570.04998321
2 a 9 anosfx_idade_def 2 a 9 anos 2019G001P0.015490850.013415720.017565980.06834748
10 a 17 anosfx_idade_def 10 a 17 anos 2019G001P0.023293380.020700940.025885820.05678433
18 a 29 anosfx_idade_def 18 a 29 anos 2019G001P0.029266980.026765640.031768330.04360616
30 a 39 anosfx_idade_def 30 a 39 anos 2019G001P0.036453630.033661460.039245800.03907987
40 a 49 anosfx_idade_def 40 a 49 anos 2019G001P0.081543840.076836260.086251420.02945497
50 a 64 anosfx_idade_def 50 a 64 anos 2019G001P0.131164270.125605740.136722810.02162204
65 anos ou maisfx_idade_def 65 anos ou mais 2019G001P0.286949090.278065530.295832650.01579552
Urbanourb_rur Urbano 2019G001P0.082170600.079659100.084682100.01559440
Ruralurb_rur Rural 2019G001P0.096941660.092436140.101447180.02371299
Rondôniauf Rondônia 2019G001P0.083957730.074009250.093906220.06045721
Acreuf Acre 2019G001P0.076392840.068253440.084532240.05436153
Amazonasuf Amazonas 2019G001P0.061588960.053582490.069595430.06632698
Roraimauf Roraima 2019G001P0.058581550.051824910.065338180.05884663
Paráuf Pará 2019G001P0.081741770.074106060.089377480.04766037
Amapáuf Amapá 2019G001P0.070687050.061646680.079727420.06525266
Tocantinsuf Tocantins 2019G001P0.093334470.081977450.104691490.06208322
Maranhãouf Maranhão 2019G001P0.089988960.084392970.095584940.03172776
Piauíuf Piauí 2019G001P0.096611780.087073330.106150240.05037322
Cearáuf Ceará 2019G001P0.106154550.099486960.112822140.03204660
Rio Grande do Norteuf Rio Grande do Norte2019G001P0.088721970.078945200.098498730.05622323
G002PSimtotalBrasil 2019G002P0.0340948060.0327929560.0353966550.019481596
G002PSim1totalCapital2019G002P0.0261710790.0245182390.0278239180.032222631
G003PSimtotalBrasil 2019G003P0.0113859600.0106846990.0120872200.031423998
G003PSim1totalCapital2019G003P0.0091520110.0082787810.0100252420.048681524
G004PSimtotalBrasil 2019G004P0.0492063610.0475893510.0508233720.016766540
G004PSim1totalCapital2019G004P0.0416277080.0395621270.0436932880.025316954
G005PSimtotalBrasil 2019G005P0.0119951440.0112657230.0127245650.031025922
G005PSim1totalCapital2019G005P0.0107058500.0097721940.0116395070.044495695
G006PSimtotalBrasil 2019G006P0.0184108170.0175246740.0192969600.024557409
G006PSim1totalCapital2019G006P0.0145141540.0134169340.0156113740.038570381
G007PSimtotalBrasil 2019G007P0.1575394360.1525949650.1624839070.016013361
G007PSim1totalCapital2019G007P0.1945158640.1858138440.2032178850.022825326
G008PSimtotalBrasil 2019G008P0.5142868740.4943635260.5342102210.019765544
G008PSim1totalCapital2019G008P0.3707209860.3478879550.3935540170.031424494
G009PSimtotalBrasil 2019G009P0.0568667230.0533316100.0604018360.031717358
G009PSim1totalCapital2019G009P0.0454193290.0413646260.0494740310.045548090
G010PSimtotalBrasil 2019G010P0.0084612870.0078660750.0090564990.035891132
G010PSim1totalCapital2019G010P0.0093153050.0083971010.0102335080.050291414
G011PSimtotalBrasil 2019G011P0.0216324060.0205016380.0227631740.026669852
G011PSim1totalCapital2019G011P0.0202268480.0187886450.0216650510.036278047
G012PSimtotalBrasil 2019G012P0.4038629000.3990674740.4086583260.006058222
G012PSim1totalCapital2019G012P0.4679850870.4600437290.4759264460.008657942
G013PSimtotalBrasil 2019G013P0.0380278150.0366703940.0393852370.018212318
G013PSim1totalCapital2019G013P0.0326406020.0308566180.0344245850.027885898
G014PSimtotalBrasil 2019G014P0.0266607740.0254929680.0278285800.022348577
G014PSim1totalCapital2019G014P0.0216545990.0202672430.0230419550.032688098
G015PSimtotalBrasil 2019G015P0.0170483270.0161832260.0179134280.025890290
G015PSim1totalCapital2019G015P0.0165458270.0153178010.0177738520.037867859
G016PSimtotalBrasil 2019G016P0.0052282410.0043625680.0060939140.084479260
G016PSim1totalCapital2019G016P0.0041508560.0033636440.0049380670.096762172

Exportando tabela de indicadores calculados - Módulo G 2019

In [33]:
diretorio_saida <- "<coloque aqui o diretório>"
write.table(matrizIndicadores,file=paste0(diretorio_saida,"Indicadores_2019G_R.csv"),sep = ";",dec = ",",row.names = FALSE)