# Cabeçalho ---- # 2º Censo Distrital da População em Situação de Rua # IPEDF - Instituto de Pesquisa e Estatística do Distrito Federal # Perfil sociodemográfico da população em situação de rua # Contato - Email: politicas.sociais@ipe.df.gov.br # Carregar pacotes e bases ---- # instalar os pacotes necessários install.packages("readxl") install.packages("dplyr") install.packages("survey") install.packages("srvyr") install.packages("janitor") # carregar os pacotes necessários library(readxl) library(dplyr) library(survey) library(srvyr) library(janitor) library(tidyr) # 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" ) ) # Quantitativo geral por local de aplicação ---- qtd_geral <- dados_censitária %>% tabyl(`1.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor rm(qtd_geral) # Quantitativo geral por serviço de acolhimento qtd_geral_serv <- dados_censitária %>% tabyl(`1.1.2`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por RA RAs <- dados_censitária %>% tabyl(`1.1.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por RA e local de aplicação local_RAs <- dados_censitária %>% count(`1.1`, `1.1.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(`1.1.1`, desc(n)) # Ordena do maior para o menor # Quantitativo de respostas diretas e por observação abord_obs <- dados_censitária %>% tabyl(`2.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por local de aplicação e sexo local_sexo <- dados_censitária %>% count(`4.1.1`, `1.1`) %>% # Conta a frequência por sexo e local group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) # Ordena por sexo e frequência # Quantitativo por local onde ia dormir no dia da aplicação local_dormiu <- dados_censitária %>% filter(`3.1` != "Não se aplica") %>% tabyl(`3.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo onde as pessoas da CT dormiram nos 7 dias anteriores local_dormiu <- dados_censitária %>% filter(`3.2.1` != "Não se aplica") %>% tabyl(`3.2.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por local onde ia dormir no dia da aplicação e sexo local_dormiu_sexo <- dados_censitária %>% count(`4.1.1`, `3.1`) %>% # Conta a frequência por sexo e local filter(`3.1` != "Não se aplica") %>% group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) # Ordena por sexo e frequência # Quantitativo por tempo no serviço de acolhimento serv <- dados_censitária %>% filter(Responsável != "Criança") %>% filter(`3.3` != "Não se aplica") %>% tabyl(`3.3`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por tempo no serviço de acolhimento e sexo serv_sexo <- dados_censitária %>% filter(Responsável != "Criança") %>% count(`3.3`, `4.1.1`) %>% # Conta a quantidade por tempo no serviço de acolhimento e sexo filter(`3.3` != "Não se aplica") %>% group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(`4.1.1`, desc(n)) # Ordena por sexo e frequência # Características sociodemográficas ---- # Quantitativo por faixa etá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" ) ) faixa_etária3 <- dados_censitária %>% count(faixa_etaria) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # faixa etária das crianças idade_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado") %>% count(`faixa_etaria`) %>% # Conta a frequência de cada categoria group_by(`faixa_etaria`) %>% mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Sexo e faixa etária das crianças sexo_idade_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado") %>% count(`4.1.1`, faixa_etaria) %>% # Conta a frequência de cada categoria group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # faixa etária e sexo das crianças(100% fecha por faixa etária) idade_sexo_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado") %>% count(`4.1.1`, faixa_etaria) %>% # Conta a frequência de cada categoria group_by(`faixa_etaria`) %>% mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Desagregar por sexo faixa_etária_sexo <- dados_censitária %>% filter(`4.1.1` != "Não se aplica") %>% count(faixa_etaria, `4.1.1`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`4.1.1`, desc(n)) # Sexo de nascimento sexo2 <- dados_censitária %>% filter(Responsável != "Criança") %>% tabyl(`4.1.1`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Sexo de nascimento das crianças e adolescentes sexo_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado") %>% count(`4.1.1`, Responsável) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Identificação com o sexo de nascimento id_sexo <- dados_censitária %>% filter(`4.1.2` != "Não se aplica", `Responsável` != "Criança") %>% tabyl(`4.1.2`) %>% # Conta a frequência de cada categoria mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Identificação com o sexo + interação com o sexo de nascimento id_por_sexo <- dados_censitária %>% filter(`4.1.2` != "Não se aplica", `Responsável` != "Criança") %>% count(`4.1.1`, `4.1.2`) %>% # Conta a quantidade por sexo e identificação com o sexo group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(`4.1.1`, desc(n)) # Ordena por sexo e frequência # Quantitativo por orientação sexual # Se pertinente, interagir com identificação com o sexo de nascimento orientação_sexual <- dados_censitária %>% filter(`4.2` != "Não se aplica", Responsável != "Criança") %>% tabyl(`4.2`) %>% # Conta a frequência mutate(proporcao = n / sum(n)) %>% # Calcula a proporção arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por raça/cor #criar variável que une: respondentes e crianças e criar um objeto com as informações raça_cor <- dados_censitária %>% mutate(raca_cor = coalesce(`4.3`, `11.4`)) %>% # Consolida raça-cor de adultos e crianças count(raca_cor) %>% # Conta a quantidade de cada categoria de raça filter(raca_cor != "Não se aplica") %>% mutate(proporcao = n / sum(n)) %>% # Calcula a proporção total arrange(desc(n)) # Ordena do maior para o menor # Quantitativo por raça/cor e crianças raça_cor_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado") %>% tabyl(`11.4`) %>% # Conta a quantidade de cada categoria de raça filter(`11.4` != "Não se aplica") %>% mutate(proporcao = n / sum(n)) %>% # Calcula a proporção total arrange(desc(n)) # Ordena do maior para o menor # Indígenas Indígenas <- dados_censitária %>% mutate(etnia = coalesce(`4.3.1`, `11.4.1`)) %>% # Consolida raça-cor de adultos e crianças filter(etnia != "Não se aplica") %>% count(etnia) %>% # Conta a quantidade de cada categoria de raça mutate(proporcao = n / sum(n)) %>% # Calcula a proporção total arrange(desc(n)) # Ordena do maior para o menor # Crianças indígenas crianças_indígenas <- dados_censitária %>% filter(`11.4.1` != "Não se aplica") %>% tabyl(`11.4.1`) %>% # Conta a quantidade de cada categoria de raça mutate(proporcao = n / sum(n)) %>% # Calcula a proporção total arrange(desc(n)) # Ordena do maior para o menor # Raça-cor e sexo raca_cor_sexo <- dados_censitária %>% mutate(raca_cor = coalesce(`4.3`, `11.4`)) %>% # Consolida raça-cor de adultos e crianças filter(raca_cor != "Não se aplica") %>% # Remove observações indesejadas count(`4.1.1`, raca_cor) %>% # Conta a quantidade de cada raça por sexo group_by(`4.1.1`) %>% # Agrupa por sexo mutate(proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) # Ordena dentro de cada sexo # Sexo e crianças sob cuidado sexo_crianças <- dados_censitária %>% filter(dados_censitária$Responsável != "Criança") %>% count(`4.1.1`, `10.3`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`4.1.1`, desc(n)) sexo_crianças_qtd <- dados_censitária %>% filter(dados_censitária$Responsável != "Criança") %>% count(`4.1.1`, `10.3.1`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`4.1.1`, desc(n)) # Quantitativo por estado civil (amostral) # Calcular a proporção e o Coeficiente de Variação (CV) das respostas de q15 estado_civil <- amostra_pes %>% group_by(`4.6`) %>% summarise( n_ponderado = survey_total(vartype = "cv"), cv = survey_total(vartype = "cv", na.rm = TRUE) # extrai o CV ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = n_ponderado / sum(n_ponderado) ) # Interagir com vínculos familiares: entre as pessoas solteiras, divorciadas/separadas e viúvas, qual o % de relatos sobre estar convivendo com marido, esposa ou companheiro? # Calcular a proporção e o Coeficiente de Variação (CV) das respostas de q15 x q185 resultado_4.6_9.1 <- amostra_pes %>% group_by(`4.6`, `9.1.2`) %>% summarise( n_ponderado = survey_total(vartype = "cv"), cv = survey_total(vartype = "cv", na.rm = TRUE) # extrai o CV ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = n_ponderado / sum(n_ponderado) ) # Tempo de rua ---- # Quantitativo por tempo de rua desde a primeira vez em que esteve nessa situação tempo_de_rua <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança", `5.1` != "Não se aplica") %>% count(`5.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`5.1`, desc(n)) # desagregar por sexo tempo_de_rua_sexo <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança") %>% count(`4.1.1`, `5.1`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo de pessoas que já saíram da situação de rua e retornaram saiu_rua <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança", `5.2` != "Não se aplica") %>% count(`5.2`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # desagregar por sexo saiu_rua_sexo <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança") %>% count(`5.2`, `4.1.1`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`4.1.1`, desc(n)) # desagregar por raça-cor saiu_rua_raca_cor <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança") %>% count(`5.2`, `4.3`) %>% group_by(`4.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(`4.3`, desc(n)) # Quantitativo de tempo desde a última vez que a pessoa retornou à situação de rua voltou_rua <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança", `5.2.1` != "Não se aplica") %>% count(`5.2.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo de tempo no serv de acolhimento tempo_serv <- dados_censitária %>% filter(`2.1` == "Abordagem direta", dados_censitária$Responsável != "Criança", `3.3` != "Não se aplica") %>% count(`3.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo de tempo antes de ir para comunidade terapêutica tempo_comunidade <- dados_censitária %>% filter(dados_censitária$Responsável != "Criança", `5.3` != "Não se aplica") %>% count(`5.3`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Procedência/migração ---- # Quantitativo por origem e nascimento (adultos) origem <- dados_censitária %>% filter(Responsável != "Criança", `6.1` != "Não se aplica", `6.1` != "Não respondeu", `6.1` != "Não sabe") %>% count(`6.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo por origem e nascimento (crianças) origem_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado", `11.5` != "Não se aplica", `11.5` != "Não sabe", `11.5` != "Não respondeu") %>% count(`11.5`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Origem e nascimento por país das crianças: país_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado", `11.5.3_País` != "Não se aplica", `11.5.3_País` != "Não sabe", `11.5.3_País` != "Não respondeu") %>% count(`11.5.3_País`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # desagregar por sexo origem_sexo <- dados_censitária %>% filter(`6.1` != "Não se aplica") %>% count(`4.1.1`,`6.1`) %>% group_by(`4.1.1`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # desagregar por raça/cor origem_raca_cor <- dados_censitária %>% mutate(raca_cor = coalesce(`4.3`, `11.4`)) %>% # Consolida raça-cor de adultos e crianças filter(`6.1` != "Não se aplica") %>% count(raca_cor,`6.1`) %>% group_by(raca_cor) %>% mutate(proporcao = n / sum(n)) %>% arrange(raca_cor, desc(n)) # Quantitativo por país mais citado País_nascimento <- dados_censitária %>% filter(`6.1.3_País` != "Não se aplica", `Responsável` != "Criança") %>% tabyl(`6.1.3_País`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo por estado mais citado Estado_nascimento <- dados_censitária %>% filter(`6.1.2_Estado` != "Não se aplica" & `6.1.2_Estado` != "Distrito Federal") %>% tabyl(`6.1.2_Estado`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Quantitativo por cidade mais citada Cidade_nascimento <- dados_censitária %>% filter(`6.1.2_Cidade` != "Não se aplica") %>% tabyl(`6.1.2_Cidade`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Motivação para vir ao Brasil motivo_brasil <- dados_censitária %>% filter(Responsável != "Criança") %>% select(starts_with("6.2.")) %>% # Seleciona todas as colunas das alternativas summarise(across(everything(), ~sum(. != "Não se aplica" & . != "Não selecionou" & . != "Não sabe" & . != "Não respondeu", 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 # Motivação para vir para o DF motivo_df <- dados_censitária %>% filter(Responsável != "Criança") %>% select(starts_with("6.3.")) %>% # Seleciona todas as colunas das alternativas summarise(across(everything(), ~sum(. != "Não se aplica" & . != "Não selecionou" & . != "Não sabe" & . != "Não respondeu", 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 # desagregar por sexo motivo_df_sexo <- dados_censitária %>% filter(Responsável != "Criança") %>% select(`4.1.1`, starts_with("6.3.")) %>% # Seleciona a variável de sexo e as alternativas da questão pivot_longer(cols = starts_with("6.3."), 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(`4.1.1`) %>% # Agrupa por sexo mutate(Proporcao = n / sum(n)) %>% # Calcula a proporção dentro de cada sexo arrange(`4.1.1`, desc(n)) # Ordena dentro de cada sexo # Motivação para a criança estar em situação de rua motivo_crianças <- dados_censitária %>% filter(Responsável != "Entrevistado", `11.6` != "Não se aplica") %>% count(`11.6`) %>% mutate(proporcao = n / sum(n)) %>% arrange(desc(n)) # Regiões de estadia e deslocamento de na rua ---- # Você fica somente nesta região? fica_região <- amostra_pes %>% group_by(`14.2`) %>% summarise( n_ponderado = survey_total(vartype = "cv"), cv = survey_total(vartype = "cv", na.rm = TRUE) # extrai o CV ) %>% mutate( n_ponderado = round(n_ponderado), proporcao = n_ponderado / sum(n_ponderado) ) # Motivação para mudar de região # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `14.3.1`:`14.3.12`) %>% pivot_longer(cols = `14.3.1`:`14.3.12`, 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 <- 1272 resultado_motivos <- 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) * 100, # Aqui entra o 1272 cv = n_ponderado_cv * 100 # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) # Visualizar print(resultado_motivos) # O que faz mudar de lugar? # Motivação para escolher uma região para ficar # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `14.1.1`:`14.1.10`) %>% pivot_longer(cols = `14.1.1`:`14.1.10`, 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() resultado_motivos2 <- 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) * 100, # Aqui entra o 1272 cv = n_ponderado_cv * 100 # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) # Visualizar print(resultado_motivos) # Local em que costuma dormir # 1. Transformar para formato longo (antes da ponderação) amostra_long <- amostra %>% select(ID, fator, `14.4.1`:`14.4.8`) %>% pivot_longer(cols = `14.4.1`:`14.4.8`, names_to = "Local", 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 <- 1272 resultado_local_dormir<- amostra_pesada_long %>% group_by(Local, Resposta) %>% summarise( n_ponderado = survey_total(vartype = "cv", na.rm = TRUE) ) %>% mutate( n_ponderado = round(n_ponderado), percentual = (n_ponderado / total_respostas_validas) * 100, # Aqui entra o 1272 cv = n_ponderado_cv * 100 # CV em porcentagem ) %>% filter(!Resposta %in% c("Não selecionou", "Não se aplica")) %>% arrange(desc(n_ponderado)) # Visualizar print(resultado_local_dormir) # Tipo de ponto de coleta ---- # Empilhar as colunas da pergunta de múltipla escolha base_long <- dados_censitária %>% pivot_longer(cols = starts_with("15.2."), # Ajuste conforme os nomes das colunas names_to = "alternativa", values_to = "resposta") # Contar a frequência de cada resposta por alternativa frequencia <- base_long %>% group_by(alternativa, resposta) %>% summarise(n = n(), .groups = "drop") %>% mutate(percentual = (n / nrow(dados_censitária)) * 100) # Percentual em relação ao total de respondentes