# Cabeçalho ---- # 2º Censo Distrital da População em Situação de Rua # IPEDF - Instituto de Pesquisa e Estatística do Distrito Federal # Educação, trabalho e renda, habitação e vínculos familiares # Contato - Email: politicas.sociais@ipe.df.gov.br # Carregar pacotes e bases ---- # Pacotes library(readxl) library(dplyr) library(survey) library(srvyr) library(janitor) library(tidyr) library(data.table) library(openxlsx) # carregar a base censitária dados_censitária <- read_xlsx("S:/AREA_TECNICA/2025/Pesquisas Dipos/1. Pastas por projeto/População em situação de rua/Censo 2/Dados/Base censitária/Censo 2 - base censitária.xlsx") # carregar a base amostral amostra <- read_xlsx("S:/AREA_TECNICA/2025/Pesquisas Dipos/1. Pastas por projeto/População em situação de rua/Censo 2/Dados/Base amostral/Censo 2 - base amostral - com pesos.xlsx") # Criar variáveis categóricas amostra <- amostra %>% mutate( fx.etaria = cut(`4.1`, c(-Inf, 17, 64, +Inf), labels = c("00-18", "18-59", "60+"))) # Criar objeto de amostra complexa com pesos amostra_pes <- survey::svydesign(id = ~ID, weights = ~fator, nest=TRUE, data=amostra) amostra_pes <- srvyr::as_survey(amostra_pes) # Criando variável de faixa etária na base censitária dados_censitária <- dados_censitária %>% mutate( faixa_etaria = case_when( !is.na(`4.4`) & `4.4` <= 11 ~ "Até 11", !is.na(`4.4`) & `4.4` >= 12 & `4.4` <= 17 ~ "12 a 17", !is.na(`4.4`) & `4.4` >= 18 & `4.4` <= 30 ~ "18 a 30", !is.na(`4.4`) & `4.4` >= 31 & `4.4` <= 49 ~ "31 a 49", !is.na(`4.4`) & `4.4` >= 50 & `4.4` <= 59 ~ "50 a 59", !is.na(`4.4`) & `4.4` >= 60 & `4.4` <= 69 ~ "60 a 69", !is.na(`4.4`) & `4.4` >= 70 & `4.4` <= 79 ~ "70 a 79", !is.na(`4.4`) & `4.4` >= 80 & `4.4` <= 89 ~ "80 a 89", !is.na(`4.4`) & `4.4` >= 90 & `4.4` <= 99 ~ "90 a 99", # Se a idade está faltando, usa diretamente a faixa de 4.4_Observação (caso válida) `4.4_Observação` %in% c("Até 11", "12 a 17", "18 a 30", "31 a 49", "50 a 59", "60 a 69", "70 a 79", "80 a 89", "90 a 99") ~ `4.4_Observação`, TRUE ~ "Não foi possível identificar/estimar" ) ) # Variável fX etária criança dados_censitária <- dados_censitária %>% mutate(idade_cr = case_when( `4.4` <= 5 ~ "De 0 a 5 anos", `4.4` <= 14 ~ "De 6 a 14 anos", `4.4` <= 17 ~ "De 15 a 17 anos" )) # Bloco 6 - Habitação e moradia ---- # Atualmente, você tem casa para morar? casa_morar <- dados_censitária %>% filter(`7.1` != "Não se aplica", Responsável != "Criança") %>% count(`7.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(casa_morar, "casa_morar.xlsx") rm(casa_morar) # Atualmente, você tem casa para morar? - Desagregar por local de nascimento casa_morar_nasc <- dados_censitária %>% filter(`Responsável` != "Criança") %>% filter(`7.1` != "Não se aplica" & `6.1` != "Não se aplica" ) %>% filter(`7.1` != "Não" & `7.1` != "Não respondeu" & `6.1` != "Não" & `6.1` != "Não sabe") %>% count(`7.1`, `6.1`) %>% group_by(`6.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(desc(n)) write.xlsx(casa_morar_nasc, "casa_morar_nasc.xlsx") rm(casa_morar_nasc) # Em qual região administrativa fica? qual_ra <- dados_censitária %>% filter(`7.1.1` != "Não se aplica" & `Responsável` != "Criança") %>% count(`7.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(qual_ra, "qual_ra.xlsx") rm(qual_ra) # Em qual estado? qual_estado <- dados_censitária %>% filter(`7.1.2` != "Não se aplica" & `Responsável` != "Criança") %>% count(`7.1.2`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(qual_estado, "qual_estado.xlsx") rm(qual_estado) # Em qual país? qual_pais <- dados_censitária %>% filter(`7.1.3` != "Não se aplica" & `Responsável` != "Criança") %>% count(`7.1.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(qual_pais, "qual_pais.xlsx") rm(qual_pais) # Essa casa/residência é? residencia_e <- dados_censitária %>% filter(`7.2` != "Não se aplica", `Responsável` != "Criança") %>% count(`7.2`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(residencia_e, "residencia_e.xlsx") rm(residencia_e) # Essa casa/residência fica em uma área regularizada, de ocupação ou assentamento? regularizada <- dados_censitária %>% filter(`7.3` != "Não se aplica" & `Responsável` != "Criança") %>% count(`7.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) regularizada2 <- dados_censitária %>% filter(`Responsável` != "Criança") %>% filter(`7.3` != "Não se aplica") %>% filter(`7.1` != "Não" & `7.1` != "Não se aplica") %>% count(`7.3`, `7.1`) %>% group_by(`7.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`7.3`, desc(n)) rm(regularizada2, regularizada) # Como você conseguiu essa casa que você tem? como_conseguiu <- dados_censitária %>% filter(`7.4` != "Não se aplica" & `Responsável` != "Criança") %>% count(`7.4`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(como_conseguiu, "como_conseguiu.xlsx") rm(como_conseguiu, qual_estado, qual_pais, regularizada, residencia_e, qual_ra, regularizada2, df_motivo, casa_morar_nasc, casa_local) # Por que você não mora ou fica nessa casa? pq_nao_mora_casa <- dados_censitária %>% filter(`Responsável` != "Criança") %>% select(starts_with("7.5.")) %>% # Seleciona todas as colunas das alternativas summarise(across(everything(), ~sum(. != "Não se aplica" & . != "Não selecionou", na.rm = TRUE))) %>% # Conta apenas respostas válidas pivot_longer(cols = everything(), names_to = "Alternativa", values_to = "Quantidade") %>% # Converte para formato longo mutate(Proporcao = Quantidade / sum(Quantidade)) %>% # Calcula a proporção total arrange(desc(Quantidade)) # Ordena do maior para o menor write.xlsx(pq_nao_mora_casa, "pq_nao_mora_casa.xlsx") pq_nao_mora_casa_outro <- dados_censitária %>% filter(Responsável != "Criança") %>% filter(`7.5_Outro` != "Não se aplica" & `7.5_Outro` != "Não sabe" & `7.5_Outro` != "Não respondeu") %>% count(`7.5_Outro`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(pq_nao_mora_casa_outro, "pq_nao_mora_casa_outro.xlsx") # desagregar por sexo pq_nao_mora_casa_sexo <- dados_censitária %>% filter(Responsável != "Criança") %>% select(`4.1.1`, starts_with("7.5.")) %>% # Seleciona a variável de sexo e as alternativas da questão filter(`4.1.1` != "Não respondeu") %>% pivot_longer(cols = starts_with("7.5."), names_to = "Alternativa", values_to = "Resposta") %>% # Transforma para formato longo filter(!Resposta %in% c("Não se aplica", "Não selecionou", "Não sabe", "Não respondeu")) %>% # Remove respostas inválidas count(`4.1.1`, Alternativa) %>% # Conta a quantidade de respostas por sexo e alternativa group_by(Alternativa) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) write.xlsx(pq_nao_mora_casa_sexo2, "pq_nao_mora_casa_sexo2.xlsx") rm(pq_nao_mora_casa, pq_nao_mora_casa_outro, pq_nao_mora_casa_sexo) #### Bloco 7 - Educação #### # Você sabe ler? sabe_ler <- amostra_pes %>% filter(`7.1` != "Não respondeu") %>% group_by(`7.1`) %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(sabe_ler, "sabe_ler.xlsx") rm(sabe_ler) # Você sabe ler sem dificuldades? sabe_escrever_sem_dific <- amostra_pes %>% group_by(`7.2`) %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(sabe_escrever_sem_dific, "sabe_escrever_sem_dific.xlsx") rm(sabe_escrever_sem_dific) # P7.2. Você frequenta/frequentou a escola? frequenta_esc <- amostra_pes %>% group_by(`7.3`) %>% filter(`7.3` != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) rm(frequenta_esc) # write.xlsx(frequenta_esc, "frequenta_esc.xlsx") # P7.3 Quantas vezes por semana você vai à escola? vezes_esc <- amostra_pes %>% group_by(`7.4`) %>% filter(`7.4` != "Não se aplica", `7.4` != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) rm(frequenta_esc, sabe_ler, sabe_escrever_sem_dific) # P7.5 Por que não frequenta a escola? # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `7.6.1`:`7.6_Outro`) %>% pivot_longer(cols = `7.6.1`:`7.6_Outro`, names_to = "Motivacao", values_to = "Resposta") %>% filter(!Resposta %in% c("Não se aplica", "Não respondeu")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # 3. Calcular n ponderado, proporção e CV não_fre_esc <- amostra_pesada_long %>% group_by(Motivacao, Resposta) %>% # Cada motivação + resposta é uma categoria summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = n_ponderado / sum(n_ponderado), # Proporção em relação a todas as respostas válidas cv = n_ponderado_cv ) %>% filter(Resposta != "Não selecionou") arrange(desc(n_ponderado)) write.xlsx(sabe_escrever_sem_dific, "sabe_escrever_sem_dific.xlsx") rm(não_fre_esc, sabe_escrever_sem_dific, vezes_esc) # P7.6 Em qual nível escolar você está agora ou até que nível escolar você estudou? nivel_escolar <- amostra_pes %>% group_by(`7.7`) %>% filter(`7.7` != "Não se aplica", `7.7`!="Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(nivel_escolar, "nivel_escolar.xlsx") rm(nivel_escolar) # P7.7 Você tem interesse em voltar/começar a estudar? interesse_voltar_estudar <- amostra_pes %>% group_by(`7.8`) %>% filter(`7.8` != "Não se aplica", `7.8` != "Não sabe", `7.8` != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(interesse_voltar_estudar, "interesse_voltar_estudar.xlsx") rm(interesse_voltar_estudar, motivo_df) # P7.8 Você já fez ou faz algum curso de formação profissional? fez_curso_profiss <- amostra_pes %>% group_by(`7.9`) %>% filter(`7.9` != "Não se aplica", `7.9` != "Não sabe", `7.9` != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(fez_curso_profiss, "fez_curso_profiss.xlsx") rm(fez_curso_profiss) # P7.8.1 Qual curso ou capacitação? # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `7.9.1.1`:`7.9.1.16`) %>% pivot_longer(cols = `7.9.1.1`:`7.9.1.16`, names_to = "Motivacao", values_to = "Resposta") # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Identifica só os respondentes que marcaram # pelo menos uma alternativa válida em 7.9.1.x elegiveis <- amostra %>% filter( if_any( starts_with("7.9.1"), ~ ! . %in% c("Não selecionou", "Não se aplica") ) ) # Soma o peso desses elegíveis total_respostas_validas <- elegiveis %>% summarise(total = sum(fator, na.rm = TRUE)) %>% pull(total) total_respostas_validas #> [1] 1397 # só quem de fato respondeu # 3. Calcular n ponderado, proporção e CV curso_capacitacao <- amostra_pesada_long %>% group_by(Motivacao, Resposta) %>% summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), percentual = (n_ponderado / total_respostas_validas), cv = n_ponderado_cv ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) write.xlsx(curso_capacitacao, "curso_capacitacao.xlsx") rm(amostra_long, curso_capacitacao, total_respostas_validas, amostra_pesada_long) #### Bloco 7.1 - Educação infanto-juvenil ---- # P9.16 A criança sabe ler e escrever um bilhete simples? crianca_bilhete <- dados_censitária %>% filter(Responsável == "Criança") %>% filter(`11.10` != "Não se aplica") %>% count(`11.10`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(crianca_bilhete, "crianca_bilhete.xlsx") rm(crianca_bilhete) # A criança frequenta a creche/escola atualmente? cri_freq_esc <- dados_censitária %>% count(`11.11`) %>% filter(`11.11` != "Não se aplica") %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(cri_freq_esc, "cri_freq_esc.xlsx") rm(cri_freq_esc) dados_censitária$ano_cr <- as.integer(dados_censitária$`11.1`) table(dados_censitária$ano_cr) dados_censitária$idade_cr <- 2024 - dados_censitária$ano_cr table(dados_censitária$idade_cr) # add fx et cri_freq_esc_fet <- dados_censitária %>% # filter(!is.na(idade_cr)) %>% count( faixa_etaria = idade_cr, escolaridade = `11.11`, name = "n" ) %>% group_by(faixa_etaria) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(cri_freq_esc_fet, "cri_freq_esc_fet.xlsx") # P9.18 Em qual série a criança/adolescente está agora? crianca_serie <- dados_censitária %>% filter(`11.12` != "Não se aplica") %>% count(`11.12`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(crianca_serie, "crianca_serie.xlsx") crianca_serie_idade <- dados_censitária %>% filter(`11.12` != "Não se aplica") %>% count(`idade_cr`, `11.12`) %>% mutate(proporcao = n / sum(n)) %>% group_by(`idade_cr`) %>% arrange(desc(n)) # P9.19 Até que série a criança/adolescente frequentou? crianca_frequentou_q_serie <- dados_censitária %>% filter(`11.13` != "Não se aplica") %>% count(`11.13`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(crianca_frequentou_q_serie, "crianca_frequentou_q_serie.xlsx") # P9.20 Por que a criança/adolescente está fora ou nunca frequentou a escola/creche? pq_cri_fora <- dados_censitária %>% select(`11.14.1`:`11.14_Outro`) %>% # Seleciona as alternativas da questão pivot_longer(cols = `11.14.1`:`11.14_Outro`), names_to = "Alternativa", values_to = "Resposta") %>% # Transforma para formato longo filter(!Resposta %in% c("Não se aplica") %>% # Remove respostas inválidas count(Alternativa) %>% # Conta a quantidade de respostas por sexo e alternativa group_by(Alternativa) %>% # Agrupa por sexo mutate(proporcao = n/sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(desc(n)) # 1) Identificar quem de fato pôde responder (elegíveis): df_elig <- dados_censitária %>% filter( if_any( c(starts_with("11.14."), "11.14_Outro"), ~ .x != "Não se aplica" ) ) # 2) Quantos elegíveis existem n_elig <- df_elig %>% distinct(ID) %>% nrow() # 3) Empilhar, recategorizar e contar pq_cri_fora <- df_elig %>% select(-`11.14.21`) %>% pivot_longer( cols = c(starts_with("11.14."), "11.14_Outro"), names_to = "Alternativa", values_to = "Resposta" ) %>% filter(!Resposta %in% c("Não se aplica", "Não selecionou")) %>% mutate( Motivo = if_else( Alternativa == "11.14_Outro", Resposta, Alternativa ) ) %>% distinct(ID, Motivo) %>% # cada criança só conta uma vez por Motivo count(Motivo, name = "n") %>% mutate( proporcao = n / n_elig # divide pelo total de elegíveis ) %>% arrange(desc(n)) # desagregar por sexo pq_cri_fora_sexo <- dados_censitária %>% select(`4.1.1`, starts_with("11.14.")) %>% # Seleciona a variável de sexo e as alternativas da questão filter(`4.1.1` != "Não respondeu") %>% pivot_longer(cols = starts_with("11.14."), names_to = "Alternativa", values_to = "Resposta") %>% # Transforma para formato longo filter(!Resposta %in% c("Não se aplica", "Não selecionou", "Não sabe", "Não respondeu")) %>% # Remove respostas inválidas count(`4.1.1`, Alternativa) %>% # Conta a quantidade de respostas por sexo e alternativa group_by(Alternativa) %>% # Agrupa por sexo mutate(Proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) write.xlsx(pq_cri_fora_sexo2, "pq_cri_fora_sexo2.xlsx") rm(pq_cri_fora, pq_cri_fora_sexo, pq_cri_fora_sexo2, pq_cri_fora_sexo3, crianca_frequentou_q_serie, crianca_serie) table(dados_censitária$`11.14_Outro`) #### Bloco 8.1 - Catação #### # P8.1 Você cata latinhas ou materiais recicláveis para vender? cata_latinhas <- dados_censitária %>% filter(Responsável != "Criança") %>% count(`9.1`) %>% filter(`9.1` != "Não se aplica") %>% mutate(proporcao = n / sum(n)) # Por sexo cata_latinhas_sexo <- dados_censitária %>% filter(Responsável != "Criança") %>% count(`9.1`, `4.1.1`) %>% filter(`9.1` != "Não se aplica") %>% group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) write.xlsx(cata_latinhas, "cata_latinhas.xlsx") # P8.2 Você tem algum vínculo com cooperativa/associação de recicláveis? Vínculo_coop <- dados_censitária %>% filter(Responsável != "Criança") %>% filter(`9.2` != "Não se aplica") %>% count(`9.2`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(Vínculo_coop, "Vínculo_coop.xlsx") rm(cata_latinhas, cata_latinhas_sexo, Vínculo_coop) # P8.3 Qual o principal motivo para você não ser associado/cooperado? motivo_nao_assos <- dados_censitária %>% filter(Responsável != "Criança") %>% filter(`9.3` != "Não se aplica") %>% count(`9.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(motivo_nao_assos, "motivo_nao_assos.xlsx") motivo_nao_assos_outro <- dados_censitária %>% filter(`9.3_Outro` != "Não se aplica", `Responsável` != "Criança") %>% count(`9.3_Outro`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(motivo_nao_assos_outro, "motivo_nao_assos_outro.xlsx") rm(motivo_nao_assos, motivo_nao_assos_outro) # P8.2 Você cata latinhas ou materiais recicláveis para vender? - amostral # desagregar por sexo # 1. Filtra e organiza respondentes_validos2 <- amostra %>% select(ID, fator, `4.2`, `8.2`) %>% # Incluir o peso (fator) # pivot_longer(cols = `8.2`, names_to = "Catador", values_to = "Resposta") %>% filter(!`8.2` %in% c("Não selecionou", "Não se aplica", "Não sabe", "Não respondeu")) %>% distinct(ID, `4.2`, `8.2`, fator) respondentes_validos2_pesado <- svydesign( ids = ~ID, weights = ~fator, data = respondentes_validos2 ) %>% as_survey() catador_sexo <- respondentes_validos2_pesado %>% group_by(`4.2`, `8.2`) %>% # filter(Catador != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) rm(catador_sexo, respondentes_validos2_pesado, respondentes_validos2) # desagregar por atividade principal # 1. Filtra e organiza table(amostra$`8.8`) respondentes_validos2 <- amostra %>% select(ID, fator, `8.8`, `8.2`) %>% # Incluir o peso (fator) # pivot_longer(cols = `8.2`, names_to = "Catador", values_to = "Resposta") %>% filter(!`8.2` %in% c("Não selecionou", "Não se aplica")) %>% distinct(ID, `8.8`, `8.2`, fator) respondentes_validos2_pesado <- svydesign( ids = ~ID, weights = ~fator, data = respondentes_validos2 ) %>% as_survey() catador_atividade <- respondentes_validos2_pesado %>% group_by(`8.8`, `8.2`) %>% # filter(Catador != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(catador_atividade, "catador_atividade.xlsx") rm(catador_atividade, respondentes_validos2_pesado, respondentes_validos2) # P8.3 Quantas vezes na semana você cata materiais recicláveis? table(amostra$`8.3`) qts_vezes_cata <- amostra_pes %>% group_by(`8.3`) %>% filter(`8.3` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(qts_vezes_cata, "qts_vezes_cata.xlsx") # P8.4 Para quem você vende o material que você recolhe? table(amostra$`8.4`) para_quem_vende <- amostra_pes %>% select(`8.4`, `8.6`) %>% filter(`8.6` == "Não, sou catador autônomo") %>% #para saber para quem o não associado vende group_by(`8.4`) %>% # filter(`8.4` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(para_quem_vende, "para_quem_vende.xlsx") # P8.5 Que tipo de veículo você utiliza para fazer o recolhimento do material? table(amostra$`8.5`) tipo_veiculo_recolhe <- amostra_pes %>% group_by(`8.5`) %>% filter(`8.5` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(tipo_veiculo_recolhe, "tipo_veiculo_recolhe.xlsx") rm(tipo_veiculo_recolhe) # P8.1 Você tem cadastro no Sistema Nacional de Emprego (SINE)? table(amostra$`8.2`) cadastro_SINE <- amostra_pes %>% group_by(`8.1`) %>% filter(`8.1` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(cadastro_SINE, "cadastro_SINE.xlsx") rm(cadastro_SINE) # P8.7 Antes de viver na rua/serviço de acolhimento, com o que você trabalhava? table(amostra$`8.7_Outro`) # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `8.7.1`:`8.7_Outro`) %>% pivot_longer(cols = `8.7.1`:`8.7_Outro`, names_to = "Onde_Trabalhava", values_to = "Resposta") %>% filter(!Resposta %in% c("Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # 3. Calcular n ponderado, proporção e CV onde_trabalhava <- amostra_pesada_long %>% group_by(Onde_Trabalhava, Resposta) %>% # Cada motivação + resposta é uma categoria summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = n_ponderado / sum(n_ponderado), # Proporção em relação a todas as respostas válidas cv = n_ponderado_cv ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) write.xlsx(onde_trabalhava, "onde_trabalhava.xlsx") rm(amostra_long, onde_trabalhava, total_respostas_validas, amostra_pesada_long) rm(catador_atividade, catador_sexo, para_quem_vende, qts_vezes_cata, respondentes_validos2, respondentes_validos2_pesado, tipo_veiculo_recolhe) # Recategorizando observações da pergunta 8.7: # 1) Extrai os dados ponderados raw <- amostra_pes$variables # 2) Empilha e recategoriza df_long <- raw %>% # exclui só a coluna genérica “8.7.21” select(-`8.7.21`) %>% # empilha todas as 8.7.* e o campo livre 8.7_Outro pivot_longer( cols = c(starts_with("8.7."), "8.7_Outro"), names_to = "Onde_Trabalhava", values_to = "Resposta" ) %>% # filtra só as marcações válidas filter(!Resposta %in% c("Não se aplica", "Não selecionou", NA_character_)) %>% # recategorização mutate( Categoria = case_when( # opções pré-definidas Onde_Trabalhava == "8.7.1" ~ "Não trabalhava", Onde_Trabalhava == "8.7.2" ~ "Construção civil/obra", Onde_Trabalhava == "8.7.3" ~ "Faxina/serviços domésticos/ serv. gerais", Onde_Trabalhava == "8.7.4" ~ "Vigia noturno/zelador/porteiro", Onde_Trabalhava == "8.7.5" ~ "Serviços administrativos", Onde_Trabalhava == "8.7.6" ~ "Serviços de transporte", Onde_Trabalhava == "8.7.7" ~ "Vendas de produtos/serviços", Onde_Trabalhava == "8.7.8" ~ "Comércio formal", Onde_Trabalhava == "8.7.9" ~ "Atividades da indústria", Onde_Trabalhava == "8.7.10" ~ "Programa/prostituição", Onde_Trabalhava == "8.7.11" ~ "Trabalho rural", Onde_Trabalhava == "8.7.12" ~ "Carregador/aux. carga e descarga", Onde_Trabalhava == "8.7.13" ~ "Coleta de recicláveis", Onde_Trabalhava == "8.7.14" ~ "Flanelinha (cuidava de veículos)", Onde_Trabalhava == "8.7.15" ~ "Distribuição de panfletos/faixas", Onde_Trabalhava == "8.7.16" ~ "Artista de rua", Onde_Trabalhava == "8.7.17" ~ "Trabalho por aplicativo", Onde_Trabalhava == "8.7.18" ~ "Engraxate", Onde_Trabalhava == "8.7.19" ~ "Capina/jardinagem", Onde_Trabalhava == "8.7.20" ~ "Empacotador", # relatos livres de 8.7_Outro str_detect(Resposta, regex("^Gari$", ignore_case = TRUE)) ~ "Faxina/serviços domésticos/ serv. gerais", str_detect(Resposta, regex("Atendente", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Garçom", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Marcenaria", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Mecânico", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Eletricista", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Cozinheiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("^Vendas?$", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Restaurante", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Artesanato", ignore_case = TRUE)) ~ "Artesanato/artista", str_detect(Resposta, regex("Bombeiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Comerciante", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Costureir", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Serralheir", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Alfaiate", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Alimentação", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Almoxarifado", ignore_case = TRUE)) ~ "Faxina/serviços domésticos/ serv. gerais", str_detect(Resposta, regex("Artista circense", ignore_case = TRUE)) ~ "Artesanato/artista", str_detect(Resposta, regex("Borracheiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Cabeleireiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Confeitaria", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Consultora de vendas", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Corte de aves", ignore_case = TRUE)) ~ "Atividades da indústria", str_detect(Resposta, regex("Decoração de festas", ignore_case = TRUE)) ~ "Serviços relacionados a eventos", str_detect(Resposta, regex("Engenharia", ignore_case = TRUE)) ~ "Atividades da indústria", str_detect(Resposta, regex("Frentista", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Frigorífico", ignore_case = TRUE)) ~ "Atividades da indústria", str_detect(Resposta, regex("Montava palco", ignore_case = TRUE)) ~ "Serviços relacionados a eventos", str_detect(Resposta, regex("Recursos Humanos", ignore_case = TRUE)) ~ "Serviços administrativos", str_detect(Resposta, regex("Sacolão", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Serviços gerais", ignore_case = TRUE)) ~ "Faxina/serviços domésticos/ serv. gerais", str_detect(Resposta, regex("Terapeuta", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Vidraceiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Área da beleza", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Barbeiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Empresário", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Percussionista", ignore_case = TRUE)) ~ "Artesanato/artista", str_detect(Resposta, regex("Pintor e cozinheiro", ignore_case = TRUE)) ~ "Prestação de serviços", str_detect(Resposta, regex("Técnico de telecomunicação", ignore_case = TRUE)) ~ "Comércio formal", str_detect(Resposta, regex("Vendedor de turismo", ignore_case = TRUE)) ~ "Comércio formal", # tudo mais cai em Outros TRUE ~ "Outros" ) ) # 3) Reconstrói o design e calcula n, CV e proporção tabela_trabalho <- df_long %>% # monta o design com o objeto ponderado as_survey_design( ids = ID, weights = fator ) %>% # conta cada Categoria (faz sum(w_i) e retorna CV) survey_count( Categoria, name = "n_ponderado", vartype = "cv" ) %>% # calcula percentual e cv em % mutate( percentual = n_ponderado / sum(n_ponderado), cv = n_ponderado_cv * 100 ) %>% select(Categoria, n_ponderado, n_ponderado_cv, percentual, cv) print(tabela_trabalho) # P8.8 Nos últimos 7 dias, qual foi a sua principal atividade para obter renda? # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `8.8`:`8.8_Outro`) %>% pivot_longer(cols = `8.8`:`8.8_Outro`, names_to = "Motivacao", values_to = "Resposta") %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Total de respostas válidas (pode ajustar se precisar recalcular a partir da base, mas por enquanto use seu valor conhecido) total_respostas_validas <- 3418 princ_atividade7d_v2 <- amostra_pesada_long %>% group_by(Motivacao, Resposta) %>% summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), percentual = (n_ponderado / total_respostas_validas) , # Aqui entra o 1272 cv = n_ponderado_cv # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) write.xlsx(princ_atividade7d_v2, "princ_atividade7d_v2.xlsx") rm(amostra_long, amostra_pesada_long, princ_atividade7d_v2) # desagregar por atividade principal # 1. Filtra e organiza table(amostra$`8.8`) respondentes_validos2 <- amostra %>% select(ID, fator, `8.8`, `4.2`) %>% # Incluir o peso (fator) # pivot_longer(cols = `8.2`, names_to = "Catador", values_to = "Resposta") %>% filter(!`8.8` %in% c("Não selecionou", "Não se aplica", "Não sabe", "Não respondeu")) %>% distinct(ID, `8.8`, `4.2`, fator) respondentes_validos2_pesado <- svydesign( ids = ~ID, weights = ~fator, data = respondentes_validos2 ) %>% as_survey() catador_atividade <- respondentes_validos2_pesado %>% group_by(`4.2`, `8.8`) %>% # filter(Catador != "Não respondeu") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) %>% select(-n_cv) catador_atividade <- respondentes_validos2_pesado %>% group_by(`8.8`) %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(catador_atividade, "princ_atividade7d.xlsx") rm(catador_atividade, respondentes_validos2_pesado, respondentes_validos2) # P8.9 Quantos dias da semana você se ocupa com essa atividade principal? table(amostra$`8.9`) dias_ocupa_ativ <- amostra_pes %>% group_by(`8.9`) %>% filter(`8.9` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(dias_ocupa_ativ, "dias_ocupa_ativ.xlsx") # P8.10 Em relação ao seu vínculo de trabalho, você está: table(amostra$`8.10`) vinculo_trab <- amostra_pes %>% group_by(`8.10`) %>% filter(`8.10` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(vinculo_trab, "vinculo_trab.xlsx") rm(vinculo_trab, dias_ocupa_ativ) # P8.11 Quando foi a última vez que trabalhou com registro em carteira? table(amostra$`8.11`) trab_registrado <- amostra_pes %>% group_by(`8.11`) %>% filter(`8.11` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(trab_registrado, "trab_registrado.xlsx") rm(trab_registrado) # P8.12 Considerando a renda de TODAS as atividades que você exerce e os benefícios que você recebe, qual é a sua renda mensal? table(amostra$`8.12`) renda <- amostra_pes %>% group_by(`8.12`) %>% filter(`8.12` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) write.xlsx(renda, "renda.xlsx") rm(renda) # P8.13 Normalmente, sua renda é destinada para: table(amostra$`8.13_Outro`) # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `4.2`, `8.13.1`:`8.13_Outro`) %>% pivot_longer(cols = `8.13.1`:`8.13_Outro`, names_to = "Destino_renda", values_to = "Resposta") %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Total de respostas válidas (pode ajustar se precisar recalcular a partir da base, mas por enquanto use seu valor conhecido) total_respostas_validas <- 3418 destino_renda <- amostra_pesada_long %>% group_by(Destino_renda, Resposta) %>% summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), percentual = (n_ponderado / total_respostas_validas) , # Aqui entra o 1272 cv = n_ponderado_cv # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) write.xlsx(destino_renda, "destino_renda.xlsx") rm(amostra_long, amostra_pesada_long,destino_renda) ñ_fez_atividade <- amostra_pes %>% select(`8.8`) %>% group_by(`8.8`) %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) %>% arrange(desc(n)) #### Bloco 8.2 - Catação #### # P9.22 A criança/adolescente faz alguma coisa para conseguir dinheiro? table(dados_censitária$`11.16`) table(dados_censitária$`11.3`) crianca_dinheiro <- dados_censitária %>% filter(`Responsável` != "Entrevistado") %>% count(`11.16`) %>% filter(`11.16` != "Não se aplica") %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) write.xlsx(crianca_dinheiro , "crianca_dinheiro2.xlsx") rm(crianca_dinheiro) # P9.23 O que a criança/adolescente faz? table(dados_censitaria$`11.16.1_Outro`) # desagregar por sexo atividade_crianca <- dados_censitária %>% select(`11.3`, starts_with("11.16.1.")) %>% # Seleciona a variável de sexo e as alternativas da questão pivot_longer(cols = starts_with("11.16.1."), names_to = "Alternativa", values_to = "Resposta") %>% # Transforma para formato longo filter(!Resposta %in% c("Não se aplica", "Não selecionou", "Não sabe", "Não respondeu")) %>% # Remove respostas inválidas count(`11.3`, Alternativa) %>% # Conta a quantidade de respostas por sexo e alternativa group_by(Alternativa) %>% # Agrupa por sexo mutate(Proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`11.3`, desc(n)) %>% select(-n) atividade_crianca <- pq_cri_fora_sexo %>% reshape2::dcast(`Alternativa` ~`11.3`) write.xlsx(atividade_crianca, "atividade_crianca.xlsx") atividade_crianca <- dados_censitária %>% filter(`Responsável` != "Entrevistado") %>% pivot_longer(cols = starts_with("11.16.1."), names_to = "Alternativa", values_to = "Resposta") %>% # Transforma para formato longo filter(!Resposta %in% c("Não se aplica")) %>% # Remove respostas inválidas count(Alternativa) %>% # Conta a quantidade de respostas por sexo e alternativa group_by(Alternativa) %>% # Agrupa por sexo mutate(Proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(desc(n)) atividade_crianca <- pq_cri_fora_sexo %>% reshape2::dcast(`Alternativa` ~`11.3`) #### Bloco 9 - Vínculos familiares #### # O que te trouxe para a situação de rua? # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator,`5.4.1`:`5.4_Outro`) %>% pivot_longer(cols = `5.4.1`:`5.4_Outro`, names_to = "O que levou à situação de rua?", values_to = "Resposta") %>% filter(!Resposta %in% c("Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Total de respostas válidas (pode ajustar se precisar recalcular a partir da base, mas por enquanto use seu valor conhecido) # total_respostas_validas <- 3418 o_que_levou_situação <- amostra_pesada_long %>% group_by(`O que levou à situação de rua?`, Resposta) %>% summarise(n_ponderado = survey_total(vartype = "cv", na.rm = TRUE)) %>% ungroup() %>% group_by(`O que levou à situação de rua?`) %>% mutate( n_ponderado = round(n_ponderado), percentual = n_ponderado / sum(n_ponderado), cv = n_ponderado_cv ) %>% ungroup() %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) # P9.1 Com quem você vive na rua atualmente? table(dados_censitária$`10.1.1`) table(dados_censitária$`10.1.2`) table(dados_censitária$`4.1.1`) # 1. Transformar para formato longo (antes da ponderação) formato_longo <- dados_censitária %>% filter(Responsável != "Criança") %>% select(`ID`, `4.1.1`, `10.1.1`:`10.1.9`) %>% pivot_longer( cols = `10.1.1`:`10.1.9`, names_to = "Com quem vive", values_to = "Resposta" ) %>% mutate(`Sexo de nascimento` = `4.1.1`) %>% # Cria uma coluna com o conteúdo de 4.1.1 select(-`4.1.1`) %>% # (Opcional) Remove a coluna original se preferir filter(!Resposta %in% c("Não selecionou", "Não se aplica")) # 3. Calcular n e proporção com_quem_vive2 <- formato_longo %>% count(`Com quem vive`, Resposta) %>% mutate(proporcao = n / sum(n)) %>% arrange(`Resposta`,desc(n)) # Desagregar por sexo com_quem_vive_sexo <- dados_censitária %>% # 1) Filtrar quem de fato responde (não criança e sexo válido) filter( Responsável != "Criança", `4.1.1` != "Não respondeu" ) %>% # 2) Selecionar ID, sexo e todas as colunas da questão select( ID, Sexo = `4.1.1`, starts_with("10.1.") ) %>% # 3) Passar para formato longo pivot_longer( cols = starts_with("10.1."), names_to = "Alternativa", values_to = "Resposta" ) %>% # 4) Manter só as marcações válidas filter(!Resposta %in% c("Não se aplica", "Não selecionou")) %>% # 5) Garantir que cada ID-Sexo–Alternativa apareça só uma vez distinct(ID, Sexo, Alternativa, .keep_all = TRUE) %>% # 6) Contar quantas pessoas de cada Sexo marcaram cada Alternativa count(Sexo, Alternativa, name = "n") %>% # 7) Dentro de cada Sexo, calcular proporção sobre o total de marcas group_by(Sexo) %>% mutate(Proporcao = n / sum(n)) %>% ungroup() %>% # 8) Ordenar para facilitar leitura arrange(Sexo, desc(n)) # P9.2 Além de você, quantas pessoas da sua família estão com você na rua? table(dados_censitária$`10.2`) qts_pessoas_moram <- dados_censitária %>% filter(Responsável != "Criança") %>% count(`10.2`) %>% filter(`10.2` != "Não se aplica") write.xlsx(qts_pessoas_moram, "qts_pessoas_moram.xlsx") rm(qts_pessoas_moram) # P9.3 Você cuida diariamente de alguém com menos de 18 anos na rua? table(dados_censitária$`10.3`) cuida_menor <- dados_censitária %>% filter(Responsável != "Criança") %>% count(`10.3`) %>% filter(`10.3` != "Não se aplica") write.xlsx(cuida_menor, "cuida_menor.xlsx") rm(cuida_menor) # P9.3.1 Quantos menores de 18 anos estão sob sua responsabilidade? table(dados_censitaria$`10.3.1`) table(dados_censitaria$`11.1`) cuida_menor <- dados_censitária %>% filter(`Responsável` != "Criança") %>% count(`10.3.1`) %>% filter(`10.3.1` != "Não se aplica") write.xlsx(cuida_menor, "cuida_menor.xlsx") rm(cuida_menor) # P9.3 Antes de ficar em situação de rua, com quem você morava? # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator,`9.3.1`:`9.3.9`) %>% pivot_longer(cols = `9.3.1`:`9.3.9`, names_to = "Com quem morava", values_to = "Resposta") %>% filter(!Resposta %in% c("Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Total de respostas válidas (pode ajustar se precisar recalcular a partir da base, mas por enquanto use seu valor conhecido) total_validos <- amostra %>% # filtra quem respondeu uma das quatro opções válidas em 9.4 filter(`9.4` %in% c( "Não tem contato de 1 a 3 anos", "Não tem contato de 4 a 5 anos", "Não tem contato há mais de 6 anos", "Nunca tive contato" )) %>% # soma todos os pesos (fator) desses 238 casos summarise(total = sum(fator, na.rm = TRUE)) %>% pull(total) total_validos print(total_validos) com_quem_morava <- amostra_pesada_long %>% group_by(`Com quem morava`, Resposta) %>% summarise(n_ponderado = survey_total(vartype = "cv", na.rm = TRUE)) %>% ungroup() %>% group_by(`Com quem morava`) %>% mutate( n_ponderado = round(n_ponderado), percentual = n_ponderado / sum(n_ponderado) * 100, cv = n_ponderado_cv * 100 ) %>% ungroup() %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(`Com quem morava`, desc(n_ponderado)) write.xlsx(com_quem_morava, "com_quem_morava.xlsx") rm(com_quem_morava, amostra.pesada.2, amostra_pesada_long) # P9.4 Com que frequência você mantém contato com familiares que não estão em situação de rua? table(amostra$`9.4`) freq_contato_familiar <- amostra_pes %>% group_by(`9.4`) %>% filter(`9.4` != "Não se aplica") %>% srvyr::summarise( n = survey_total(vartype = "cv")) %>% mutate( n = round(n), proporcao = n / sum(n) ) # P9.5 Por que você não faz contato com sua família? table(amostra$`9.4.1.1`) # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator,`9.4.1.1`:`9.4.1.12`) %>% pivot_longer(cols = `9.4.1.1`:`9.4.1.12`, names_to = "Alternativa", values_to = "Resposta") %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) # 2. Criar o objeto survey ponderado com a base longa amostra_pesada_long <- svydesign( ids = ~ID, weights = ~fator, data = amostra_long ) %>% as_survey() # Total de respostas válidas (pode ajustar se precisar recalcular a partir da base, mas por enquanto use seu valor conhecido) # total_respostas_validas <- 3418 pq_nao_contato_familia <- amostra_pesada_long %>% group_by(Alternativa, Resposta) %>% summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = (n_ponderado / total_validos), # Aqui entra o 1272 cv = n_ponderado_cv # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) write.xlsx(pq_nao_contato_familia, "pq_nao_contato_familia.xlsx") rm(amostra_long, amostra_pesada_long, pq_nao_contato_familia) # Média de pessoas que convive na rua por respondente média <- dados_censitária %>% filter(!`10.2` %in% c("Não sabe", "Não respondeu", "Não se aplica")) %>% filter(Responsável != "Criança") %>% mutate(n_familia = as.numeric(`10.2`)) %>% summarise( media = mean(n_familia, na.rm = TRUE), sd = sd(n_familia, na.rm = TRUE) )