Skip to content

Commit

Permalink
minor update
Browse files Browse the repository at this point in the history
  • Loading branch information
rafapereirabr committed Sep 25, 2024
1 parent b04f182 commit 7f28e3b
Show file tree
Hide file tree
Showing 41 changed files with 17,045 additions and 9 deletions.
2 changes: 1 addition & 1 deletion 4_microdados.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ pop <- pop |>
V6036 >= 55 & V6036 < 60 ~ "55-60",
V6036 >= 60 & V6036 < 65 ~ "60-65",
V6036 >= 65 & V6036 < 70 ~ "65-70",
V6036 >= 70 ~ "75+"
V6036 >= 70 ~ "70+"
))
head(pop) |>
Expand Down
4 changes: 2 additions & 2 deletions _freeze/4_microdados/execute-results/html.json

Large diffs are not rendered by default.

Binary file modified _freeze/4_microdados/figure-html/pop-pyramid-ggplot-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/4_microdados.html
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ <h2 data-number="4.3" data-anchor-id="dados-de-população"><span class="header-
<span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> V6036 <span class="sc">&gt;=</span> <span class="dv">55</span> <span class="sc">&amp;</span> V6036 <span class="sc">&lt;</span> <span class="dv">60</span> <span class="sc">~</span> <span class="st">"55-60"</span>,</span>
<span id="cb6-16"><a href="#cb6-16" aria-hidden="true" tabindex="-1"></a> V6036 <span class="sc">&gt;=</span> <span class="dv">60</span> <span class="sc">&amp;</span> V6036 <span class="sc">&lt;</span> <span class="dv">65</span> <span class="sc">~</span> <span class="st">"60-65"</span>,</span>
<span id="cb6-17"><a href="#cb6-17" aria-hidden="true" tabindex="-1"></a> V6036 <span class="sc">&gt;=</span> <span class="dv">65</span> <span class="sc">&amp;</span> V6036 <span class="sc">&lt;</span> <span class="dv">70</span> <span class="sc">~</span> <span class="st">"65-70"</span>,</span>
<span id="cb6-18"><a href="#cb6-18" aria-hidden="true" tabindex="-1"></a> V6036 <span class="sc">&gt;=</span> <span class="dv">70</span> <span class="sc">~</span> <span class="st">"75+"</span></span>
<span id="cb6-18"><a href="#cb6-18" aria-hidden="true" tabindex="-1"></a> V6036 <span class="sc">&gt;=</span> <span class="dv">70</span> <span class="sc">~</span> <span class="st">"70+"</span></span>
<span id="cb6-19"><a href="#cb6-19" aria-hidden="true" tabindex="-1"></a> ))</span>
<span id="cb6-20"><a href="#cb6-20" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-21"><a href="#cb6-21" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(pop) <span class="sc">|&gt;</span> </span>
Expand Down
Binary file modified docs/4_microdados_files/figure-html/pop-pyramid-ggplot-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ <h1 class="title">{censobr}: Explorando o Censo Demográfico em R</h1>

<section id="introdução" class="level1" data-number="1">
<h1 data-number="1"><span class="header-section-number">1</span> Introdução</h1>
<p>Este site apresenta o material de apoio para a oficina <strong>“{censobr}: Explorando o Censo Demográfico em R”</strong>. A oficina será realizada como parte da programação do 23<sup>o</sup> Encontro da ABEP, em Brasília, entre os dias 23 e 26 de setembro de 2024.</p>
<p>Este site apresenta o material de apoio para a oficina <strong>“{censobr}: Explorando o Censo Demográfico em R”</strong>. A oficina será realizada como parte da programação do 23<sup>o</sup> <a href="https://eventos.galoa.com.br/abep-2024/page/3977-home">Encontro da ABEP</a>, em Brasília, entre os dias 23 e 26 de setembro de 2024.</p>
<!-- <img src="/images/abep_2024_logo.png" width="600" align="center"> -->
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
Expand Down
2 changes: 1 addition & 1 deletion docs/search.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
"href": "4_microdados.html#dados-de-população",
"title": "4  Microdados",
"section": "4.3 Dados de população",
"text": "4.3 Dados de população\nNeste exemplo, nós vamos criar um gráfico da pirâmica populacional do Brasil no ano de 2010. O primeiro passo é usar a função read_population() para carregar os microdados de população.\nO comportamento padrão das funções do {censobr} é retornar todas as variáveis das bases de dados. No entanto, como vamos fazer uma análise simples, o mais eficiente é passarmos um vetor com os nomes das colunas que vamos utilizar. Neste caso, usaremos somente as variáveis de peso amostral, sexo e idade (códigos \"V0010\", \"V0601\" e \"V6036\", respectivamente). No último capítulo do curso a gente vai ver como baixar os dicionários variáveis dos censos.\n\npop &lt;- read_population(\n year = 2010,\n1 columns = c('V0010', 'V0601', 'V6036'),\n2 add_labels = 'pt',\n showProgress = FALSE\n )\n\nclass(pop)\n\n\n1\n\nAumentando eficiência ao ler apenas as colunas que vamos usar\n\n2\n\nAdicionando os ‘labels’ em Português das variáveis categóricas.\n\n\n\n\n[1] \"arrow_dplyr_query\"\n\n\nAo rodar o comando nrow(pop), você verá que a tabela de microdados de população do Censo de 2010 tinha mais de vinte milhões de observações (20.635.472), mas essas observações não estão carregadas na sua memória RAM. Isso porque, por padrão, a saída da função é um \"arrow_dplyr_query\" ou \"ArrowObject\". Isso permite que você trabalhe com os dados do censo de maneira super rápida e eficiente, mesmo que a tabela de dados seja grande demais para a memória do seu computador. Note que se você passar o parâmetro as_data_frame = TRUE, a função carregará os dados como um data.frame na memória RAM. Atenção: isso pode fazer com que a sessão do R trave em ambientes com pouca memória.\nEsse output em arrow pode ser analisado de maneira similar a como se analisaria um data.frame utilizando-se funções do pacote {dplyr}. Uma diferença, no entanto, é que as operações somente são executadas e resultados extraídos quando o usuário roda a função dplyr::collect().\nNeste exemplo, abaixo, nós visualizamos as primeiras linhas 6 da tabela de dados com head(pop), e somente essas poucas observações são carregas para memória com o commando collect():\n\nhead(pop) |&gt; \n collect()\n\n V0010 V0601 V6036\n1 8.705865 Masculino 22\n2 8.705865 Feminino 17\n3 9.818689 Masculino 38\n4 9.495608 Feminino 44\n5 9.495608 Masculino 11\n6 9.495608 Masculino 16\n\n\nO próximo passo para criamos nossa pirâmide populacional é criar um variável categória com grupos de idade. No exemplo abaix, nós utilizadmos grupos de 5 anos.\n\npop &lt;- pop |&gt;\n mutate(\n age_group = dplyr::case_when(\n V6036 &lt;= 04 ~ \"00-05\",\n V6036 &gt;= 05 & V6036 &lt; 10 ~ \"05-10\",\n V6036 &gt;= 10 & V6036 &lt; 15 ~ \"10-15\",\n V6036 &gt;= 15 & V6036 &lt; 20 ~ \"15-20\",\n V6036 &gt;= 20 & V6036 &lt; 25 ~ \"20-25\",\n V6036 &gt;= 25 & V6036 &lt; 30 ~ \"25-30\",\n V6036 &gt;= 30 & V6036 &lt; 35 ~ \"30-35\",\n V6036 &gt;= 35 & V6036 &lt; 40 ~ \"35-40\",\n V6036 &gt;= 40 & V6036 &lt; 45 ~ \"40-45\",\n V6036 &gt;= 45 & V6036 &lt; 50 ~ \"45-50\",\n V6036 &gt;= 50 & V6036 &lt; 55 ~ \"50-55\",\n V6036 &gt;= 55 & V6036 &lt; 60 ~ \"55-60\",\n V6036 &gt;= 60 & V6036 &lt; 65 ~ \"60-65\",\n V6036 &gt;= 65 & V6036 &lt; 70 ~ \"65-70\",\n V6036 &gt;= 70 ~ \"75+\"\n ))\n\nhead(pop) |&gt; \n collect()\n\n V0010 V0601 V6036 age_group\n1 8.705865 Masculino 22 20-25\n2 8.705865 Feminino 17 15-20\n3 9.818689 Masculino 38 35-40\n4 9.495608 Feminino 44 40-45\n5 9.495608 Masculino 11 10-15\n6 9.495608 Masculino 16 15-20\n\n\nE em seguida, nós só precisamos somar o número de homens e mulheres em cada grupo de idade. Para isso, nós somamos os valores da variável de peso amostral V0010 em cada grupo. Repare que ao chamarmos a função collect(), o código é executado e retorna um data.frame com a contagem de pessoas por sexo e faixa de idade. Repare que nós processamos todos os mais de 20 milhões de registro do censo, mas só precisamos carregar na memória essa tabela com 30 observações.\n\n# cacula tabela de contagem de pessoas por idade\npiramide_df &lt;- pop |&gt;\n group_by(V0601, age_group) |&gt;\n summarise(pop_count = sum(V0010)) |&gt;\n collect()\n\nhead(piramide_df)\n\n# A tibble: 6 × 3\n# Groups: V0601 [2]\n V0601 age_group pop_count\n &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;\n1 Masculino 20-25 8627665.\n2 Feminino 15-20 8429180.\n3 Masculino 35-40 6767177.\n4 Feminino 40-45 6688525.\n5 Masculino 10-15 8727095.\n6 Masculino 15-20 8557608.\n\n\nPronto, no último passo é só fazer o gráfico de pirâmide populacional utilizando o pacote {ggplot2}.\n\n\nCódigo\n# remove grupo com idade missing `NA`\npiramide_df &lt;- filter(piramide_df, !is.na(age_group))\n\n# transforma a contagem de mulheres para valores negativos\npiramide_df &lt;- piramide_df |&gt;\n mutate(pop_count = if_else(V0601 == \"Masculino\", pop_count, -pop_count))\n\n# figura\nggplot(data = piramide_df,\n aes(x = pop_count / 1000,\n y = age_group,\n fill = V0601)) +\n geom_col() +\n scale_fill_discrete(name=\"\", type=c(\"#ffcb69\",\"#437297\")) +\n scale_x_continuous(labels = function(x){scales::comma(abs(x))},\n breaks = c(-8000, -4000,0,4000, 8000),\n name = \"População (em milhares)\") +\n theme_classic() +\n theme(\n legend.position = \"top\",\n axis.title.y=element_blank(),\n panel.grid.major.x = element_line(color = \"grey90\")\n )\n\n\n\n\n\nPirâmide demográfica, Brasil, 2010",
"text": "4.3 Dados de população\nNeste exemplo, nós vamos criar um gráfico da pirâmica populacional do Brasil no ano de 2010. O primeiro passo é usar a função read_population() para carregar os microdados de população.\nO comportamento padrão das funções do {censobr} é retornar todas as variáveis das bases de dados. No entanto, como vamos fazer uma análise simples, o mais eficiente é passarmos um vetor com os nomes das colunas que vamos utilizar. Neste caso, usaremos somente as variáveis de peso amostral, sexo e idade (códigos \"V0010\", \"V0601\" e \"V6036\", respectivamente). No último capítulo do curso a gente vai ver como baixar os dicionários variáveis dos censos.\n\npop &lt;- read_population(\n year = 2010,\n1 columns = c('V0010', 'V0601', 'V6036'),\n2 add_labels = 'pt',\n showProgress = FALSE\n )\n\nclass(pop)\n\n\n1\n\nAumentando eficiência ao ler apenas as colunas que vamos usar\n\n2\n\nAdicionando os ‘labels’ em Português das variáveis categóricas.\n\n\n\n\n[1] \"arrow_dplyr_query\"\n\n\nAo rodar o comando nrow(pop), você verá que a tabela de microdados de população do Censo de 2010 tinha mais de vinte milhões de observações (20.635.472), mas essas observações não estão carregadas na sua memória RAM. Isso porque, por padrão, a saída da função é um \"arrow_dplyr_query\" ou \"ArrowObject\". Isso permite que você trabalhe com os dados do censo de maneira super rápida e eficiente, mesmo que a tabela de dados seja grande demais para a memória do seu computador. Note que se você passar o parâmetro as_data_frame = TRUE, a função carregará os dados como um data.frame na memória RAM. Atenção: isso pode fazer com que a sessão do R trave em ambientes com pouca memória.\nEsse output em arrow pode ser analisado de maneira similar a como se analisaria um data.frame utilizando-se funções do pacote {dplyr}. Uma diferença, no entanto, é que as operações somente são executadas e resultados extraídos quando o usuário roda a função dplyr::collect().\nNeste exemplo, abaixo, nós visualizamos as primeiras linhas 6 da tabela de dados com head(pop), e somente essas poucas observações são carregas para memória com o commando collect():\n\nhead(pop) |&gt; \n collect()\n\n V0010 V0601 V6036\n1 8.705865 Masculino 22\n2 8.705865 Feminino 17\n3 9.818689 Masculino 38\n4 9.495608 Feminino 44\n5 9.495608 Masculino 11\n6 9.495608 Masculino 16\n\n\nO próximo passo para criamos nossa pirâmide populacional é criar um variável categória com grupos de idade. No exemplo abaix, nós utilizadmos grupos de 5 anos.\n\npop &lt;- pop |&gt;\n mutate(\n age_group = dplyr::case_when(\n V6036 &lt;= 04 ~ \"00-05\",\n V6036 &gt;= 05 & V6036 &lt; 10 ~ \"05-10\",\n V6036 &gt;= 10 & V6036 &lt; 15 ~ \"10-15\",\n V6036 &gt;= 15 & V6036 &lt; 20 ~ \"15-20\",\n V6036 &gt;= 20 & V6036 &lt; 25 ~ \"20-25\",\n V6036 &gt;= 25 & V6036 &lt; 30 ~ \"25-30\",\n V6036 &gt;= 30 & V6036 &lt; 35 ~ \"30-35\",\n V6036 &gt;= 35 & V6036 &lt; 40 ~ \"35-40\",\n V6036 &gt;= 40 & V6036 &lt; 45 ~ \"40-45\",\n V6036 &gt;= 45 & V6036 &lt; 50 ~ \"45-50\",\n V6036 &gt;= 50 & V6036 &lt; 55 ~ \"50-55\",\n V6036 &gt;= 55 & V6036 &lt; 60 ~ \"55-60\",\n V6036 &gt;= 60 & V6036 &lt; 65 ~ \"60-65\",\n V6036 &gt;= 65 & V6036 &lt; 70 ~ \"65-70\",\n V6036 &gt;= 70 ~ \"70+\"\n ))\n\nhead(pop) |&gt; \n collect()\n\n V0010 V0601 V6036 age_group\n1 8.705865 Masculino 22 20-25\n2 8.705865 Feminino 17 15-20\n3 9.818689 Masculino 38 35-40\n4 9.495608 Feminino 44 40-45\n5 9.495608 Masculino 11 10-15\n6 9.495608 Masculino 16 15-20\n\n\nE em seguida, nós só precisamos somar o número de homens e mulheres em cada grupo de idade. Para isso, nós somamos os valores da variável de peso amostral V0010 em cada grupo. Repare que ao chamarmos a função collect(), o código é executado e retorna um data.frame com a contagem de pessoas por sexo e faixa de idade. Repare que nós processamos todos os mais de 20 milhões de registro do censo, mas só precisamos carregar na memória essa tabela com 30 observações.\n\n# cacula tabela de contagem de pessoas por idade\npiramide_df &lt;- pop |&gt;\n group_by(V0601, age_group) |&gt;\n summarise(pop_count = sum(V0010)) |&gt;\n collect()\n\nhead(piramide_df)\n\n# A tibble: 6 × 3\n# Groups: V0601 [2]\n V0601 age_group pop_count\n &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;\n1 Masculino 20-25 8627665.\n2 Feminino 15-20 8429180.\n3 Masculino 35-40 6767177.\n4 Feminino 40-45 6688525.\n5 Masculino 10-15 8727095.\n6 Masculino 15-20 8557608.\n\n\nPronto, no último passo é só fazer o gráfico de pirâmide populacional utilizando o pacote {ggplot2}.\n\n\nCódigo\n# remove grupo com idade missing `NA`\npiramide_df &lt;- filter(piramide_df, !is.na(age_group))\n\n# transforma a contagem de mulheres para valores negativos\npiramide_df &lt;- piramide_df |&gt;\n mutate(pop_count = if_else(V0601 == \"Masculino\", pop_count, -pop_count))\n\n# figura\nggplot(data = piramide_df,\n aes(x = pop_count / 1000,\n y = age_group,\n fill = V0601)) +\n geom_col() +\n scale_fill_discrete(name=\"\", type=c(\"#ffcb69\",\"#437297\")) +\n scale_x_continuous(labels = function(x){scales::comma(abs(x))},\n breaks = c(-8000, -4000,0,4000, 8000),\n name = \"População (em milhares)\") +\n theme_classic() +\n theme(\n legend.position = \"top\",\n axis.title.y=element_blank(),\n panel.grid.major.x = element_line(color = \"grey90\")\n )\n\n\n\n\n\nPirâmide demográfica, Brasil, 2010",
"crumbs": [
"<span class='chapter-number'>4</span>  <span class='chapter-title'>Microdados</span>"
]
Expand Down
7 changes: 7 additions & 0 deletions docs/site_libs/HomeButton-0.0.1/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Copyright (C) 2014 Daniel Montague

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Loading

0 comments on commit 7f28e3b

Please sign in to comment.