<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introdução ao R on Profa. Renata Oliveira</title><link>/disciplinas/intror_master/</link><description>Recent content in Introdução ao R on Profa. Renata Oliveira</description><generator>Source Themes academia (https://sourcethemes.com/academic/)</generator><language>en-us</language><lastBuildDate>Sat, 15 May 2021 00:00:00 +0000</lastBuildDate><atom:link href="/disciplinas/intror_master/index.xml" rel="self" type="application/rss+xml"/><item><title>Atividade 1</title><link>/disciplinas/intror_master/atividade1/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/atividade1/</guid><description>&lt;h2 id="a-unidade-1-é-estruturada-considerando-os-seguintes-tópicos">A &lt;strong>Unidade 1&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/h2>
&lt;ul>
&lt;li>Instalação do R e do RStudio&lt;/li>
&lt;li>Como instalar o Git&lt;/li>
&lt;li>Criando uma conta no Github&lt;/li>
&lt;li>Instalar e carregar pacotes no R&lt;/li>
&lt;li>Instalar pacotes no R a partir do Github&lt;/li>
&lt;li>E aí, R? Entendendo o ambiente de trabalho&lt;/li>
&lt;li>Primeiros documentos no R - RMarkdown&lt;/li>
&lt;/ul>
&lt;h2 id="esta-atividade-deverá-ser-realizada-até-dia-1910-quando-teremos-nosso-primeiro-encontro-síncrono-são-propostas-as-seguintes-atividades">Esta atividade deverá ser realizada até dia &lt;strong>19/10&lt;/strong>, quando teremos nosso primeiro encontro síncrono. São propostas as seguintes atividades:&lt;/h2>
&lt;ol>
&lt;li>Instale o R, o RStudio e o Git no seu computador - &lt;a href="https://www.places.education/cursos/intro_r/install/">Link&lt;/a>&lt;/li>
&lt;li>Crie uma conta no Github, caso ainda não tenha - &lt;a href="https://www.places.education/cursos/intro_r/github/">Link&lt;/a>&lt;/li>
&lt;li>Faça o tutorial - &lt;a href="https://www.places.education/cursos/intro_r/swirl/">Link&lt;/a>&lt;/li>
&lt;li>Faça o tutorial de Markdown desenvolvido pelas R-Ladies Beatriz Milz e Haydée Svab - &lt;a href="https://beatriz-milz.shinyapps.io/tutorial_markdown/#section-introdu%C3%A7%C3%A3o">Link&lt;/a>&lt;/li>
&lt;li>Crie o seu primeiro documento RMarkdown. Para tanto, escolha o tipo de output que quer gerar. Não se preocupe com o conteúdo por enquanto. Apenas explore as diferentes possibilidades de outputs! Lembre-se que a extensão desse arquivo é &lt;code>.Rmd&lt;/code> - &lt;a href="https://www.places.education/cursos/intro_r/intro_rmarkdown/">Link&lt;/a>&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>No &lt;a href="https://rmarkdown.rstudio.com/gallery.html">site do RStudio&lt;/a> há uma série de modelos de arquivos que podem ser gerados a partir do RMarkdown.&lt;/p>
&lt;/blockquote>
&lt;h2 id="as-entregas-seráão">A(s) entrega(s) será(ão):&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Arquivo .Rmd&lt;/strong> referente à &lt;strong>tarefa 5&lt;/strong> desta atividade pela tarefa no SIGAA.&lt;/li>
&lt;li>Explorar toda a documentação, tentar solucionar dúvidas com os colegas e &lt;strong>trazer dúvidas para nosso encontro&lt;/strong>!&lt;/li>
&lt;/ul>
&lt;hr>&lt;/hr>
&lt;h2 id="algumas-dicas-adicionais-para-a-tarefa-5">Algumas dicas adicionais para a tarefa 5.&lt;/h2>
&lt;p>No RStudio, crie um novo documento &lt;code>R Markdown&lt;/code> escolhendo &lt;code>Arquivo | Novo | R Markdown&lt;/code>.
Clique no botão &lt;code>Knit HTML&lt;/code> na barra de ferramentas do doc para visualizar seu documento.&lt;/p>
&lt;p>Se você quiser tornar o seu documento público, recomendo, inicialmente, utilizar o &lt;code>RPubs&lt;/code>. Alguns passos para isso:&lt;/p>
&lt;ol>
&lt;li>Na janela de pré-visualização, clique no botão &lt;code>Publicar&lt;/code>.&lt;/li>
&lt;li>É um processo em duas etapas. Na primeira etapa, você precisa registrar uma conta &lt;code>RPubs&lt;/code> ou fazer o login, caso já tenha uma. Você escreve o título de seu documento e dá uma breve descrição (para que outros possam encontrar seu trabalho a partir da busca).&lt;/li>
&lt;li>Uma vez terminado e clicando no botão &lt;code>Continue&lt;/code> na parte inferior, você irá diretamente para o artigo publicado.&lt;/li>
&lt;li>Você pode optar por atualizar seu conteúdo.&lt;/li>
&lt;/ol>
&lt;hr>&lt;/hr>
&lt;h2 id="bônus-rode-o-seu-primeiro-documento-em-rmarkdown">BÔNUS: Rode o seu primeiro documento em RMarkdown!&lt;/h2>
&lt;ol>
&lt;li>Salve o &lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/ESP5b0WfqYJFplhjSRiciG0BNKQZnv2HzbHnPBxZEBr3Ew?e=gVcWCQ">arquivo&lt;/a> em um diretório que você consiga acessar depois. Sugiro criar um diretório para essa finalidade.&lt;/li>
&lt;li>Abra o arquivo no RStudio: &lt;code>File | Open File&lt;/code> e navegue até o arquivo &lt;code>01-covid.Rmd&lt;/code> selecionando-o.&lt;/li>
&lt;li>Você identificará o arquivo por meio do &lt;code>YAML&lt;/code> com &lt;code>title: &amp;quot;Mortes por COVID-19&amp;quot;&lt;/code>&lt;/li>
&lt;li>Verifique se houve alguma mensagem abaixo da barra de ferramentas da janela de edição do &lt;code>RMarkdown&lt;/code> para que sejam instalados &lt;code>packages&lt;/code> necessários para rodar esse &lt;code>.Rmd&lt;/code>&lt;/li>
&lt;li>Clique no botão de &lt;code>knitr&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>Aprecie o seu documento BÔNUS!&lt;/p></description></item><item><title>Atividade 2</title><link>/disciplinas/intror_master/atividade2/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/atividade2/</guid><description>&lt;p>A &lt;strong>Unidade 2&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/p>
&lt;ul>
&lt;li>Estrutura de dados no R;&lt;/li>
&lt;li>Tipos de dados, importação de base de dados, criação de objeto (vetores, matrizes, data frames), operadores aritméticos, de comparação e lógicos;&lt;/li>
&lt;li>Visualização de dados no R.&lt;/li>
&lt;/ul>
&lt;p>Esta atividade deverá ser realizada até dia &lt;strong>26/10&lt;/strong>, quando teremos nosso segundo encontro síncrono. São propostas as seguintes atividades:&lt;/p>
&lt;ol>
&lt;li>Faça o download do arquivo disponível no &lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EeRUAZXugYhOqiO6lRHfbVYBYUZx8HUcj8vN538pmX0t4g?e=8UQAnq">link&lt;/a>&lt;/li>
&lt;li>Resolva as questões.&lt;/li>
&lt;li>Gere um tipo de documento .Rmd de sua preferência.&lt;/li>
&lt;li>Envie por email (&lt;a href="mailto:renataoliveira@gmail.com">renataoliveira@gmail.com&lt;/a> ou &lt;a href="mailto:renataoliveira@cefetmg.br">renataoliveira@cefetmg.br&lt;/a>) o arquivo .Rmd e o arquivo gerado.&lt;/li>
&lt;/ol>
&lt;h2 id="as-entregas-seráão">A(s) entrega(s) será(ão):&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Arquivos&lt;/strong> referentes à &lt;strong>tarefa 4&lt;/strong> desta atividade.&lt;/li>
&lt;/ul>
&lt;hr>&lt;/hr>
&lt;h1 id="operações-matemáticas-e-vetores">Operações matemáticas e vetores&lt;/h1>
&lt;h2 id="exercícios">Exercícios:&lt;/h2>
&lt;p>&lt;strong>Questão 1:&lt;/strong>&lt;/p>
&lt;p>Qual é a classe dos vetores abaixo? Imprima o vetor com &lt;em>print&lt;/em> e tente advinhar. Use a função &lt;em>class&lt;/em> para descobrir a resposta.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(1, 2, TRUE, 4)
v2 &amp;lt;- c(&amp;quot;T&amp;quot;, &amp;quot;TRUE&amp;quot;, &amp;quot;FALSE&amp;quot;, &amp;quot;T&amp;quot;)
v3 &amp;lt;- c(&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;)
v4 &amp;lt;- c(1, &amp;quot;4&amp;quot;, 4, 1)
v5 &amp;lt;- c(1, 2, &amp;quot;feijao com arroz&amp;quot;)
v6 &amp;lt;- c(&amp;quot;Beatriz&amp;quot;, &amp;quot;Pedro&amp;quot;, TRUE)
v7 &amp;lt;- c(T, T, F, T, F, F, 42)
&lt;/code>&lt;/pre>&lt;p>Você consegue identificar as regras de combinação de tipos de dados diferentes em um mesmo vetor? Se tiver dúvidas, pergunte.&lt;/p>
&lt;p>&lt;strong>Questão 2:&lt;/strong>&lt;/p>
&lt;p>Veja as cores de veículos comercializados por uma concessionária na semana passada.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">colours &amp;lt;- factor(c(&amp;quot;red&amp;quot;,&amp;quot;blue&amp;quot;,&amp;quot;red&amp;quot;,&amp;quot;white&amp;quot;,
&amp;quot;silver&amp;quot;,&amp;quot;red&amp;quot;,&amp;quot;white&amp;quot;,&amp;quot;silver&amp;quot;,
&amp;quot;red&amp;quot;,&amp;quot;red&amp;quot;,&amp;quot;white&amp;quot;,&amp;quot;silver&amp;quot;,&amp;quot;silver&amp;quot;),
levels=c(&amp;quot;red&amp;quot;,&amp;quot;blue&amp;quot;,&amp;quot;white&amp;quot;,&amp;quot;silver&amp;quot;,&amp;quot;black&amp;quot;))
&lt;/code>&lt;/pre>&lt;p>Se você colocar o código a seguir, o que acontece? Por que? Responda na atividade da semana.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">colours[4] &amp;lt;- &amp;quot;orange&amp;quot;
colours
&lt;/code>&lt;/pre>&lt;p>Utilize a função &lt;code>table&lt;/code> para determinar a quantidade de automóveis comercializados de cada cor. Pesquise na internet e pergunte caso tenha dúvidas.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">table(colours)
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">d11 &amp;lt;- plyr::count(colours)
d12 &amp;lt;- plyr::count(mtcars, vars = &amp;quot;cyl&amp;quot;)
d13 &amp;lt;- gmodels::CrossTable(colours)
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Questão 3:&lt;/strong>&lt;/p>
&lt;p>Considere:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">car.type &amp;lt;- factor(c(&amp;quot;saloon&amp;quot;,&amp;quot;saloon&amp;quot;,&amp;quot;hatchback&amp;quot;,
&amp;quot;saloon&amp;quot;,&amp;quot;convertible&amp;quot;,&amp;quot;hatchback&amp;quot;,&amp;quot;convertible&amp;quot;,
&amp;quot;saloon&amp;quot;, &amp;quot;hatchback&amp;quot;,&amp;quot;saloon&amp;quot;, &amp;quot;saloon&amp;quot;,
&amp;quot;saloon&amp;quot;,&amp;quot;hatchback&amp;quot;),
levels=c(&amp;quot;saloon&amp;quot;,&amp;quot;hatchback&amp;quot;,&amp;quot;convertible&amp;quot;))
&lt;/code>&lt;/pre>&lt;p>Gere a tabela de frequências para os dados &lt;code>car.type&lt;/code>.&lt;/p>
&lt;p>Experimente:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">table(car.type, colours)
gmodels::CrossTable(car.type, colours)
&lt;/code>&lt;/pre>&lt;p>Qual a diferença entre o uso da função &lt;code>table&lt;/code> com um ou argumentos?
Qual a diferença entre &lt;code>table(car.type, colours)&lt;/code> e &lt;code>table(colours, car.type)&lt;/code>?&lt;/p>
&lt;p>&lt;strong>Questão 4:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Crie dois novos vetores. No primeiro, anote (invente) o número de palavras que você escreveu no último trabalho acadêmico ou relatório técnico em cada semana, considerando os últimos três meses. No segundo, anote (chute, novamente) quantos litros de café você tomou em cada semana.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Nomeie os elementos dos 2 vetores.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Calcule sua produtividade em &amp;ldquo;palavras por Litro de café&amp;rdquo;. Atribua o resultado a um novo vetor.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">
&lt;/code>&lt;/pre></description></item><item><title>Lab 1</title><link>/disciplinas/intror_master/lab1/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab1/</guid><description>&lt;h2 id="a-unidade-1-é-estruturada-considerando-os-seguintes-tópicos">A &lt;strong>Unidade 1&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/h2>
&lt;ul>
&lt;li>Instalação do R e do RStudio&lt;/li>
&lt;li>Como instalar o Git&lt;/li>
&lt;li>Criando uma conta no Github&lt;/li>
&lt;li>Instalar e carregar pacotes no R&lt;/li>
&lt;li>Instalar pacotes no R a partir do Github&lt;/li>
&lt;li>E aí, R? Entendendo o ambiente de trabalho&lt;/li>
&lt;li>Primeiros documentos no R - RMarkdown&lt;/li>
&lt;/ul>
&lt;h2 id="diretrizes-gerais">Diretrizes gerais:&lt;/h2>
&lt;ol>
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EdTjtwRl5F5DjFDlgrOB6BgB4fqdODik9Jkp0cA_sB696Q?e=jdqlwW">Arquivo&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>Instale os pacotes:&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;code>&amp;quot;tidyverse&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;tinytex&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;knitr&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;flexdashboard&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;xaringan&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;code>&amp;quot;xaringanthemer&amp;quot;&lt;/code>&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>Chame as bibliotecas dos pacotes instalados&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;code>library(&amp;quot;tidyverse&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>library(&amp;quot;tinytex&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>library(&amp;quot;knitr&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>library(&amp;quot;flexdashboard&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>library(&amp;quot;xaringan&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>library(&amp;quot;xaringanthemer&amp;quot;)&lt;/code>&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>
&lt;p>Corrija os problemas de códigos nos respectivos chunks.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio da tarefa no Sigaa&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Dica: As barras que delimitam o endereçamento do arquivo no seu computador, quando exibidas no explorer do Windows, são invertidas (). O R trabalha com barras normais (/) para endereçamento.&lt;/p>
&lt;/blockquote>
&lt;h2 id="preparação-para-o-exercício">Preparação para o exercício:&lt;/h2>
&lt;p>Carregue o &lt;em>data frame&lt;/em> &lt;em>mtcars&lt;/em>&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">data(mtcars)
&lt;/code>&lt;/pre>&lt;h2 id="encontre-o-erro-em-todos-os-códigos-abaixo-corrija-os-e-rode-o-script">Encontre o erro em todos os códigos abaixo, corrija-os e rode o script:&lt;/h2>
&lt;p>Q1)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">Head(mtcars)
&lt;/code>&lt;/pre>&lt;p>Q2)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">str(Mtcars)
&lt;/code>&lt;/pre>&lt;p>Q3)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">dim[mtcars]
&lt;/code>&lt;/pre>&lt;p>Q4)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">nomes(mtcars)
&lt;/code>&lt;/pre>&lt;p>Q5)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">head(mtcars, x = 10)
&lt;/code>&lt;/pre>&lt;p>Q6)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- (&amp;quot;pato&amp;quot;, &amp;quot;cachorro&amp;quot;, &amp;quot;minhoca&amp;quot;, &amp;quot;lagarto&amp;quot;)
&lt;/code>&lt;/pre>&lt;p>Q7)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v2 &amp;lt;- c(&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;)
v1 + 42
&lt;/code>&lt;/pre>&lt;p>Q8)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(&amp;quot;pato&amp;quot;, &amp;quot;cachorro&amp;quot;, &amp;quot;minhoca&amp;quot;, &amp;quot;lagarto&amp;quot;
&lt;/code>&lt;/pre>&lt;p>Q9)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v3 &amp;lt;- c(33 31 40 25 27 40)
&lt;/code>&lt;/pre>&lt;p>Q10)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(pato, cachorro, minhoca, lagarto)
&lt;/code>&lt;/pre>&lt;p>Q11)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(&amp;quot;pato&amp;quot; &amp;quot;cachorro&amp;quot; &amp;quot;minhoca&amp;quot; &amp;quot;lagarto&amp;quot;)
&lt;/code>&lt;/pre>&lt;p>Q12)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v3 &amp;lt;- C(33, 31, 40, 25, 27, 40)
&lt;/code>&lt;/pre>&lt;p>Q13)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(&amp;quot;pato&amp;quot;, &amp;quot;cachorro&amp;quot;&amp;quot;, &amp;quot;minhoca&amp;quot;, &amp;quot;lagarto&amp;quot;)
v3 &amp;lt;- c(33, 31, 40, 25, 27, 40)
myData &amp;lt;- data.frame(v1, v3)
&lt;/code>&lt;/pre>&lt;p>Q14)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(&amp;quot;pato&amp;quot;, &amp;quot;cachorro&amp;quot;&amp;quot;, &amp;quot;minhoca&amp;quot;, &amp;quot;lagarto&amp;quot;)
v4 &amp;lt;- c(33, 31, 40, 25)
myData &amp;lt;- data.frame(v1 = animal, v4 = idade)
&lt;/code>&lt;/pre>&lt;p>Q15)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">ls
&lt;/code>&lt;/pre>&lt;p>Q16)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">v1 &amp;lt;- c(&amp;quot;pato&amp;quot;, &amp;quot;cachorro&amp;quot;, &amp;quot;minhoca&amp;quot;, &amp;quot;lagarto&amp;quot;)
sum(v1)
&lt;/code>&lt;/pre></description></item><item><title>Atividade 3</title><link>/disciplinas/intror_master/atividade3/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/atividade3/</guid><description>&lt;h2 id="a-unidade-3-é-estruturada-considerando-os-seguintes-tópicos">A &lt;strong>Unidade 3&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/h2>
&lt;ul>
&lt;li>Manipulação e transformação de dados no R: funções para manipulação e tratamento de dados.&lt;/li>
&lt;li>Estatística descritiva e mineração de dados&lt;/li>
&lt;/ul>
&lt;h2 id="esta-atividade-deverá-ser-realizada-até-dia-0911-quando-teremos-nosso-segundo-encontro-síncrono-são-propostas-as-seguintes-atividades">Esta atividade deverá ser realizada até dia &lt;strong>09/11&lt;/strong>, quando teremos nosso segundo encontro síncrono. São propostas as seguintes atividades:&lt;/h2>
&lt;ol>
&lt;li>Faça o download do arquivo disponível no &lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EX0uowQRoZZMlQnHVPmDy5sBtJt3ZVjBLNcDuNvS1qZU6Q?e=3z9FTB">link&lt;/a>&lt;/li>
&lt;li>Resolva as questões.&lt;/li>
&lt;li>Gere um tipo de documento .Rmd de sua preferência.&lt;/li>
&lt;li>Envie por email (&lt;a href="mailto:renataoliveira@gmail.com">renataoliveira@gmail.com&lt;/a> ou &lt;a href="mailto:renataoliveira@cefetmg.br">renataoliveira@cefetmg.br&lt;/a>) o arquivo .Rmd e o arquivo gerado.&lt;/li>
&lt;/ol>
&lt;h2 id="as-entregas-seráão">A(s) entrega(s) será(ão):&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Arquivos&lt;/strong> referentes à &lt;strong>tarefa 4&lt;/strong> desta atividade.&lt;/li>
&lt;/ul>
&lt;hr>&lt;/hr>
&lt;p>A poluição por plástico é um problema importante e crescente, afetando negativamente a saúde dos oceanos e da vida selvagem.
&lt;a href="https://ourworldindata.org/plastic-pollution">Our World in Data&lt;/a> tem muitos dados em vários níveis, em escala global, por país e ao longo do tempo.&lt;/p>
&lt;p>Para este laboratório, nos concentramos nos dados de 2010.&lt;/p>
&lt;p>Além disso, a National Geographic realizou um concurso de comunicação de visualização de dados sobre resíduos plásticos, como visto &lt;a href="https://www.nationalgeographic.org/funding-opportunities/innovation-challenges/plastic/dataviz/">aqui&lt;/a>.&lt;/p>
&lt;p>Os dados estão no &lt;a href="https://cefetmgbr-my.sharepoint.com/%E2%9D%8C/g/personal/renataoliveira_cefetmg_br/ESK2oL3BBs1FgbPSB8LbpbEBQVLJX5MmsHnTKqFkFJbYPA?e=fbprgc">Link&lt;/a>&lt;/p>
&lt;h1 id="objetivos-de-aprendizagem">Objetivos de aprendizagem&lt;/h1>
&lt;ul>
&lt;li>Visualizar dados numéricos e categóricos e interpretar visualizações&lt;/li>
&lt;li>Recriação de visualizações&lt;/li>
&lt;/ul>
&lt;h2 id="pacotes">Pacotes&lt;/h2>
&lt;p>Usaremos o pacote &lt;strong>tidyverse&lt;/strong>* para esta análise.
Execute o seguinte código no Console para carregar este pacote.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">library(tidyverse)
&lt;/code>&lt;/pre>&lt;h2 id="dados">Dados&lt;/h2>
&lt;p>O conjunto de dados para esta tarefa pode ser encontrado no link a seguir, acessado por meio do comando:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
#url_file &amp;lt;- &amp;quot;atalho no seu computador/plastic-waste.csv&amp;quot;
#plastic_waste &amp;lt;- read_csv(url_file)
#library(readr)
plastic_waste &amp;lt;- read_csv(&amp;quot;D:/OneDrive - cefetmg.br/01_disciplinas/ERE/2020_2/R_adm/00_aulas/class07_dados_adm/data/plastic-waste.csv&amp;quot;)
View(plastic_waste)
&lt;/code>&lt;/pre>&lt;p>As descrições das variáveis são as seguintes:&lt;/p>
&lt;ul>
&lt;li>&lt;code>code&lt;/code>: código do país&lt;/li>
&lt;li>&lt;code>entity&lt;/code>: Nome do país&lt;/li>
&lt;li>&lt;code>continent&lt;/code>: Nome do continente&lt;/li>
&lt;li>&lt;code>year&lt;/code>: Ano&lt;/li>
&lt;li>&lt;code>gdp_per_cap&lt;/code>: PIB per capita internacional 2011 $, taxa&lt;/li>
&lt;li>&lt;code>plastic_waste_per_cap&lt;/code>: Quantidade de resíduos plásticos per capita em kg/dia&lt;/li>
&lt;li>&lt;code>mismanaged_plastic_waste_per_cap&lt;/code>: Quantidade de resíduos plásticos mal administrados per capita em kg/dia&lt;/li>
&lt;li>&lt;code>mismanaged_plastic_waste&lt;/code>: Toneladas de resíduos plásticos mal administrados&lt;/li>
&lt;li>&lt;code>coastal_pop&lt;/code>: Número de indivíduos que vivem no litoral/na costa&lt;/li>
&lt;li>&lt;code>total_pop&lt;/code>: População total de acordo com Gapminder&lt;/li>
&lt;/ul>
&lt;h1 id="warm-up">Warm up&lt;/h1>
&lt;ul>
&lt;li>
&lt;p>Recorde que o RStudio está dividido em quatro painéis. Sem olhar, você pode nomeá-las todas e descrever brevemente seu propósito?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Verifique se o conjunto de dados foi carregado para o Ambiente. Quantas observações há no conjunto de dados? Ao clicar no conjunto de dados no Ambiente, você poderá inspecioná-lo com mais cuidado. Alternativamente, você pode digitar &lt;code>View(plastic_waste)&lt;/code> no Console para fazer isso.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Dê uma rápida olhada nos dados e observe que há células que levam o valor &lt;code>NA&lt;/code> - o que isso significa?&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="exercícios">Exercícios&lt;/h1>
&lt;p>Vamos começar dando uma olhada na distribuição de resíduos plásticos per capita em 2010.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste, aes(x = plastic_waste_per_cap)) +
geom_histogram(binwidth = 0.2)
&lt;/code>&lt;/pre>&lt;p>Um país se destaca como uma observação incomum no topo da distribuição.&lt;/p>
&lt;p>Uma maneira de identificar este país é filtrar os dados para países onde os resíduos plásticos per capita são maiores que 3,5 kg/pessoa.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">plastic_waste %&amp;gt;%
filter(plastic_waste_per_cap &amp;gt; 3.5)
&lt;/code>&lt;/pre>&lt;p>Você esperava este resultado?&lt;/p>
&lt;p>Você poderia considerar fazer alguma pesquisa sobre Trinidad e Tobago para ver por que os resíduos plásticos per capita são tão altos lá, ou se isto é um erro de dados.&lt;/p>
&lt;ol>
&lt;li>Faça um histograma para a distribuição de resíduos plásticos per capita desagregados (facet) por continente. O que você pode dizer sobre como os continentes se comparam uns aos outros em termos de seus resíduos plásticos per capita?&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">ggplot(data = plastic_waste, aes(x = plastic_waste_per_cap)) +
geom_histogram() +
facet_wrap(~ continent)
&lt;/code>&lt;/pre>&lt;p>Outra forma de visualizar os dados numéricos é utilizando gráficos de densidade.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste, aes(x = plastic_waste_per_cap)) +
geom_density()
&lt;/code>&lt;/pre>&lt;p>E comparar as distribuições entre continentes por curvas de densidade de coloração por continente.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste,
mapping = aes(x = plastic_waste_per_cap,
color = continent)) +
geom_density()
&lt;/code>&lt;/pre>&lt;p>O gráfico resultante pode ser um pouco difícil de ler, então vamos também preencher as curvas com cores.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste,
mapping = aes(x = plastic_waste_per_cap,
color = continent,
fill = continent)) +
geom_density()
&lt;/code>&lt;/pre>&lt;p>A sobreposição de cores torna difícil dizer o que está acontecendo com as distribuições nos continentes plotados devido a continentes plotados sobre eles.&lt;/p>
&lt;p>Podemos mudar o nível de transparência da cor de preenchimento para ajudar nisso.&lt;/p>
&lt;p>O argumento &lt;code>alpha&lt;/code> recebe valores entre 0 e 1: 0 é completamente transparente e 1 é completamente opaco.
Não há como dizer qual valor funcionará melhor, então você só precisa tentar alguns valores.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste,
mapping = aes(x = plastic_waste_per_cap,
color = continent,
fill = continent)) +
geom_density(alpha = 0.5)
&lt;/code>&lt;/pre>&lt;p>Isto ainda não parece ótimo&amp;hellip;&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Recriar as parcelas de densidade acima usando um nível &lt;code>alpha&lt;/code> diferente (inferior) que funcione melhor para exibir as curvas de densidade para todos os continentes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Descreva porque definimos a &amp;ldquo;cor&amp;rdquo; e &amp;ldquo;preenchimento&amp;rdquo; das curvas através do mapeamento estético do gráfico, mas definimos o nível &amp;ldquo;alpha&amp;rdquo; como uma característica da geometria de plotagem.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>E ainda outra maneira de visualizar esta relação é utilizando gráficos boxplot.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = plastic_waste,
mapping = aes(x = continent,
y = plastic_waste_per_cap)) +
geom_boxplot()
&lt;/code>&lt;/pre>&lt;ol>
&lt;li>Converta os boxplot da tarefa anterior para &lt;a href="http://ggplot2.tidyverse.org/reference/geom_violin.html">plot de violino&lt;/a>. O que os gráficos de violino revelam que os boxplot não revelam? Quais características são aparentes nas parcelas de box mas não nas parcelas de violino?&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">ggplot(data = plastic_waste,
mapping = aes(x = continent,
y = plastic_waste_per_cap)) +
geom_violin()
&lt;/code>&lt;/pre>&lt;ol>
&lt;li>
&lt;p>Visualizar a relação entre os resíduos plásticos per capita e os resíduos plásticos mal administrados per capita usando um gráfico de dispersão. Descrever a relação.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Colorir os pontos no gráfico de dispersão por continente.
Parece haver alguma distinção clara entre continentes com relação a como os resíduos plásticos per capita e os resíduos plásticos mal administrados per capita estão associados?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Visualize a relação entre os resíduos plásticos per capita e a população total, assim como os resíduos plásticos per capita e a população costeira.
Você precisará fazer duas parcelas separadas.
Algum destes pares de variáveis parece estar associado de forma mais linear?&lt;/p>
&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">
plastic_waste %&amp;gt;%
ggplot(aes(x = mismanaged_plastic_waste_per_cap, y = plastic_waste_per_cap, color = continent)) +
geom_point() +
scale_color_viridis_d() +
labs(x = &amp;quot;Resíduos plásticos mal administrados per capita&amp;quot;,
y = &amp;quot;Resíduos plásticos per capita&amp;quot;,
color = &amp;quot;Continente&amp;quot;,
title = &amp;quot;Resíduos plásticos per capita e os resíduos plásticos mal administrados per capita&amp;quot;,
subtitle = &amp;quot;por continente&amp;quot;) +
theme_minimal()
plastic_waste %&amp;gt;%
ggplot(aes(x = coastal_pop, y = plastic_waste_per_cap, color = continent)) +
geom_point() +
scale_color_viridis_d() +
labs(x = &amp;quot;Resíduos plásticos mal administrados per capita&amp;quot;,
y = &amp;quot;Resíduos plásticos per capita&amp;quot;,
color = &amp;quot;Continente&amp;quot;,
title = &amp;quot;Resíduos plásticos per capita e os resíduos plásticos mal administrados per capita&amp;quot;,
subtitle = &amp;quot;por continente&amp;quot;) +
theme_minimal()
plastic_waste %&amp;gt;%
ggplot(aes(x = total_pop, y = plastic_waste_per_cap, color = continent)) +
geom_point() +
scale_color_viridis_d() +
labs(x = &amp;quot;Resíduos plásticos mal administrados per capita&amp;quot;,
y = &amp;quot;Resíduos plásticos per capita&amp;quot;,
color = &amp;quot;Continente&amp;quot;,
title = &amp;quot;Resíduos plásticos per capita e os resíduos plásticos mal administrados per capita&amp;quot;,
subtitle = &amp;quot;por continente&amp;quot;) +
theme_minimal()
&lt;/code>&lt;/pre>&lt;ol>
&lt;li>Recrie o seguinte gráfico e interprete o que você vê no contexto dos dados.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">plastic_waste %&amp;gt;%
mutate(coastal_pop_prop = coastal_pop / total_pop) %&amp;gt;%
filter(plastic_waste_per_cap &amp;lt; 3) %&amp;gt;%
ggplot(aes(x = coastal_pop_prop, y = plastic_waste_per_cap, color = continent)) +
geom_point() +
geom_smooth(color = &amp;quot;black&amp;quot;) +
scale_color_viridis_d() +
labs(x = &amp;quot;Coastal population proportion (Coastal / total population)&amp;quot;,
y = &amp;quot;Plastic waste per capita &amp;quot;,
color = &amp;quot;Continent&amp;quot;,
title = &amp;quot;Plastic waste vs. coastal population proportion&amp;quot;,
subtitle = &amp;quot;by continent&amp;quot;) +
theme_minimal()
&lt;/code>&lt;/pre></description></item><item><title>Lab 2.1 - `ggplot`</title><link>/disciplinas/intror_master/lab21/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab21/</guid><description>&lt;p>A &lt;strong>Unidade 2&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/p>
&lt;ul>
&lt;li>Estrutura de dados no R;&lt;/li>
&lt;li>Tipos de dados, importação de base de dados, criação de objeto (vetores, matrizes, data frames), operadores aritméticos, de comparação e lógicos;&lt;/li>
&lt;li>Visualização de dados no R.&lt;/li>
&lt;/ul>
&lt;h2 id="diretrizes-gerais">&lt;strong>Diretrizes gerais&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EQRGYbjqPK9PpLiRI6M2SBUBsfh__B4NfDOM5EvLeYG_wg?e=z7pDKM">Arquivo&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>Siga as diretrizes da atividade.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio da tarefa no Sigaa&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>&lt;/hr>
&lt;h2 id="atividade">&lt;strong>Atividade&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Dê uma olhada no dataframe Starwars.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">glimpse(starwars)
&lt;/code>&lt;/pre>&lt;ol start="2">
&lt;li>Modifique o seguinte gráfico para que a cor de todos os pontos seja ROSA.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(starwars,
aes(x = height, y = mass, color = gender, size = birth_year)) +
geom_point(color = &amp;quot;pink&amp;quot;)
&lt;/code>&lt;/pre>&lt;ol start="3">
&lt;li>Adicione texto no título, eixos x e y e tamanho dos pontos. Remova o comentário para ver o efeito.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(starwars,
aes(x = height, y = mass, color = as.factor(gender), size = birth_year)) +
geom_point() +
labs(
title = &amp;quot;TEste&amp;quot;,
x = &amp;quot;Adoro&amp;quot;,
y = &amp;quot;WOW&amp;quot;,
size = &amp;quot;Idade&amp;quot;
)
&lt;/code>&lt;/pre>&lt;ol start="4">
&lt;li>Escolha uma única variável categórica do conjunto de dados e faça um gráfico de barras de sua distribuição.&lt;/li>
&lt;/ol>
&lt;p>(Um pouco de código inicial é fornecido abaixo, e o chunk é definido para não ser rodado com &lt;code>eval = FALSE&lt;/code> porque o código atual ali não é válido e, portanto, o documento não permitia o &lt;code>knit&lt;/code>. Uma vez substituído o código por um código válido, defina a opção &amp;ldquo;eval = TRUE&amp;rdquo;, ou remova a opção &amp;ldquo;eval&amp;rdquo; por completo, uma vez que está definida como &amp;ldquo;TRUE&amp;rdquo; por padrão).&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(starwars, aes(___)) +
geom___
&lt;/code>&lt;/pre>&lt;ol start="5">
&lt;li>Escolha uma única variável numérica e faça um histograma dela.&lt;/li>
&lt;/ol>
&lt;p>(Desta vez nenhum código inicial é fornecido, você está por sua conta!)&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
&lt;/code>&lt;/pre>&lt;ol start="6">
&lt;li>Escolha uma variável numérica e uma variável categórica e faça uma visualização (você escolhe o tipo!) para visualizar a relação entre as duas variáveis. Junto com seu código e sua saída, forneça uma interpretação da visualização.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
&lt;/code>&lt;/pre>&lt;ol start="7">
&lt;li>Escolha duas variáveis categóricas e faça uma visualização para entender visualmente a relação entre as duas variáveis. Junto com seu código e saída, forneça uma interpretação da visualização.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
&lt;/code>&lt;/pre>&lt;ol start="8">
&lt;li>Escolha duas variáveis numéricas e duas variáveis categóricas e faça uma visualização que incorpore todas elas e forneça uma interpretação com sua resposta.&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
&lt;/code>&lt;/pre></description></item><item><title>Atividade 4</title><link>/disciplinas/intror_master/atividade4/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/atividade4/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="introdução-ao-r---processamento-com-matrizes" class="section level1">
&lt;h1>Introdução ao R - Processamento com Matrizes&lt;/h1>
&lt;p>Lucélia Vaz&lt;/p>
&lt;div id="retrospecto-e-agenda" class="section level2">
&lt;h2>Retrospecto e agenda&lt;/h2>
&lt;p>1 - O que é o ambiente R e para que serve?&lt;/p>
&lt;p>2 - Tipos básicos de dados no R.&lt;/p>
&lt;p>3 - Criando e nomeando vetores no R.&lt;/p>
&lt;p>4 - Subconjuntos de vetores no R.&lt;/p>
&lt;p>5 - Como criar e nomear matrizes no R.&lt;/p>
&lt;p>6 - Operações aritméticas com matrizes.&lt;/p>
&lt;/div>
&lt;div id="recursos" class="section level2">
&lt;h2>Recursos&lt;/h2>
&lt;p>&lt;a href="https://youtu.be/SWxoJqTqo08">Vídeos DataCamp&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/❌/g/personal/renataoliveira_cefetmg_br/EXg-lGMviChHstCtTLP8d9AB62Z00cdNFQTrbsFJPDMAlA?e=JZ0gIm">Dados&lt;/a>&lt;/p>
&lt;/div>
&lt;div id="exercício" class="section level2">
&lt;h2>Exercício&lt;/h2>
&lt;p>Os dados abaixo correspondem às observações sobre Despesa de Consumo Pessoal e Produto Interno Bruto em bilhões de dólares de 2000, para os Estados Unidos. Os dados foram obtidos no livro do Gujarati, intitulado Econometria básica. Existe uma teoria que estabelece uma relação entre o consumo e a renda de um país (medida em termos do Produto Interno Bruto). Partindo do pressuposto que, esta é uma relação linear, temos que o a Despesa de consumo pessoal (Y) guarda a seguinte relação com o Produto Interno Bruto (X).&lt;/p>
&lt;p>Y= β&lt;sub>0&lt;/sub> + β&lt;sub>1&lt;/sub>X&lt;/p>
&lt;p>Com base no exposto acima, siga as orientações abaixo para obter os valores de β0 e β1 e, assim, determinar a equação da reta.&lt;/p>
&lt;/div>
&lt;div id="base-de-dados" class="section level2">
&lt;h2>Base de dados&lt;/h2>
&lt;pre class="r">&lt;code>as.matrix(RendaConsumo)&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="atividade" class="section level2">
&lt;h2>Atividade&lt;/h2>
&lt;p>a - Crie um vetor de uns que tenha um número de entradas igual ao número de linhas da matriz acima. Pode denominá-lo “uns”.&lt;/p>
&lt;p>b - Crie uma matriz juntando o vetor de “uns” e a terceira coluna da matriz acima. Pode denominá-la X.&lt;/p>
&lt;p>c - Crie um vetor a partir da segunda coluna da matriz acima. Pode denominá-lo Y.&lt;/p>
&lt;p>d - Realize o seguinte cálculo: (X&lt;sup>T&lt;/sup>X)&lt;sup>−1&lt;/sup> X&lt;sup>T&lt;/sup>Y.&lt;/p>
&lt;p>e - Identifique o β&lt;sub>0&lt;/sub> e o β&lt;sub>1&lt;/sub>.&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Lab 2.2 - `ggplot` e `dplyr`</title><link>/disciplinas/intror_master/lab22/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab22/</guid><description>&lt;p>A &lt;strong>Unidade 2&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/p>
&lt;ul>
&lt;li>Estrutura de dados no R;&lt;/li>
&lt;li>Tipos de dados, importação de base de dados, criação de objeto (vetores, matrizes, data frames), operadores aritméticos, de comparação e lógicos;&lt;/li>
&lt;li>Visualização de dados no R.&lt;/li>
&lt;/ul>
&lt;h2 id="diretrizes-gerais">&lt;strong>Diretrizes gerais&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EdOhUzJEDXhFsbtqeXPtQk4BG0o3aTwZCnp8ZdotdiNaxg?e=gHdRz4">Arquivo&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>Siga as diretrizes da atividade.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio da tarefa no Sigaa&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>&lt;/hr>
&lt;h2 id="atividade">&lt;strong>Atividade&lt;/strong>&lt;/h2>
&lt;p>Nessa mini-análise trabalharemos com os dados usados no projeto publicada por Five Thirty Eight &lt;a href="https://fivethirtyeight.com/features/the-dollar-and-cents-case-against-hollywoods-exclusion-of-women/">&amp;ldquo;The Dollar-And-Cents Case Against Hollywood&amp;rsquo;s Exclusion of Women&amp;rdquo;&lt;/a>.&lt;/p>
&lt;p>Sua tarefa é preencher os espaços em branco assinalados por &lt;code>___&lt;/code>.&lt;/p>
&lt;h3 id="dados-e-pacotes">Dados e pacotes&lt;/h3>
&lt;p>Começamos com o carregamento dos pacotes que vamos utilizar. Lembrem-se que, caso haja algum problema com o carregamento dos pacotes, tente instalá-los novamente.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">library(fivethirtyeight)
library(tidyverse)
&lt;/code>&lt;/pre>&lt;p>O conjunto de dados contém informações sobre &lt;code>r nrow(bechdel)&lt;/code> filmes lançados entre &lt;code>r min(bechdel$year)&lt;/code> e &lt;code>r max(bechdel$year)&lt;/code>.&lt;/p>
&lt;p>Entretanto, vamos focar nossa análise em filmes lançados entre 1990 e 2013.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">bechdel90_13 &amp;lt;- bechdel %&amp;gt;%
filter(between(year, 1990, 2013))
&lt;/code>&lt;/pre>&lt;p>Existem &amp;lsquo;___&amp;rsquo; filmes. (insira a quantidade de filmes)&lt;/p>
&lt;hr>
&lt;p>As variáveis financeiras em que vamos nos concentrar são as seguintes:&lt;/p>
&lt;ul>
&lt;li>&lt;code>budget_2013&lt;/code>: Orçamento em dólares de 2013 ajustados à inflação.&lt;/li>
&lt;li>&lt;code>domgross_2013&lt;/code>: Dólares internos brutos (EUA) em 2013, dólares ajustados pela inflação.&lt;/li>
&lt;li>&lt;code>intgross_2013&lt;/code>: Total internacional (i.e., mundial) bruto em 2013 dólares corrigidos da inflação.&lt;/li>
&lt;/ul>
&lt;p>E também utilizaremos as variáveis &lt;code>binary&lt;/code> e &lt;code>clean_test&lt;/code> para &lt;strong>grouping&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h3 id="análise">Análise&lt;/h3>
&lt;p>Vamos ver como o orçamento médio e o bruto variam conforme o filme caso tenha passado no teste de Bechdel, que é armazenado na variável &amp;ldquo;binary&amp;rdquo;.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">bechdel90_13 %&amp;gt;%
group_by(binary) %&amp;gt;%
summarise(med_budget = median(budget_2013),
med_domgross = median(domgross_2013, na.rm = TRUE),
med_intgross = median(intgross_2013, na.rm = TRUE))
&lt;/code>&lt;/pre>&lt;p>Em seguida, vamos ver como o orçamento meidano e o bruto variam por um indicador mais detalhado do resultado do teste de Bechdel.&lt;/p>
&lt;p>Essa informação é armazenada na variável &amp;lsquo;clean_test&amp;rsquo;, que assume os seguintes valores:&lt;/p>
&lt;ul>
&lt;li>&lt;code>ok&lt;/code> = passa no teste&lt;/li>
&lt;li>&lt;code>dubious&lt;/code>.&lt;/li>
&lt;li>&lt;code>men&lt;/code> = as mulheres só falam de homens&lt;/li>
&lt;li>&lt;code>notalk&lt;/code> = as mulheres não falam umas com as outras&lt;/li>
&lt;li>&lt;code>nowomen&lt;/code> = menos de duas mulheres&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">bechdel90_13 %&amp;gt;%
group_by(clean_test) %&amp;gt;%
summarise(med_budget = median(budget_2013),
med_domgross = median(domgross_2013, na.rm = TRUE),
med_intgross = median(intgross_2013, na.rm = TRUE))
&lt;/code>&lt;/pre>&lt;p>A fim de avaliar como o retorno do investimento varia entre os filmes que passam e fracassam no &lt;strong>teste de Bechdel&lt;/strong>, vamos primeiro criar uma nova variável chamada &lt;code>roi&lt;/code> como uma razão do orçamento bruto.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">bechdel90_13 &amp;lt;- bechdel90_13 %&amp;gt;%
mutate(roi = (intgross_2013 + domgross_2013) / budget_2013)
&lt;/code>&lt;/pre>&lt;p>Vamos ver quais filmes têm o maior retorno sobre o investimento.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">bechdel90_13 %&amp;gt;%
arrange(desc(roi)) %&amp;gt;%
select(title, roi, year)
&lt;/code>&lt;/pre>&lt;p>Abaixo está uma visualização do retorno do investimento por resultado de teste, porém é difícil ver as distribuições devido a algumas observações extremas.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = bechdel90_13,
mapping = aes(x = clean_test, y = roi, color = binary)) +
geom_boxplot() +
labs(title = &amp;quot;Retorno do investimento vs. Resultados do teste Bechdel&amp;quot;,
x = &amp;quot;Resultado detalhado de Bechdel&amp;quot;,
y = &amp;quot;___&amp;quot;,
color = &amp;quot;Resultado binário de Bechdel&amp;quot;)
&lt;/code>&lt;/pre>&lt;p>Quais são os filmes com retorno de investimento &lt;em>muito altos&lt;/em>?&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">bechdel90_13 %&amp;gt;%
filter(roi &amp;gt; 400) %&amp;gt;%
select(title, budget_2013, domgross_2013, year)
&lt;/code>&lt;/pre>&lt;p>Veja como é a relação entre os filmes com menor retorno e o resultado detalhado do teste Bechedel.&lt;/p>
&lt;p>A ampliação dos filmes com &lt;code>roi &amp;lt; ___&lt;/code> proporciona uma melhor visão de como os medianos através das categorias se comparam:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">ggplot(data = bechdel90_13, mapping = aes(x = clean_test, y = roi, color = binary)) +
geom_boxplot() +
labs(title = &amp;quot;Retorno do investimento vs. Resultado do teste de Bechdel&amp;quot;,
subtitle = &amp;quot;___&amp;quot;, # Something about zooming in to a certain level
x = &amp;quot;Resultado detalhado de Bechdel&amp;quot;,
y = &amp;quot;Retorno do investimento&amp;quot;,
color = &amp;quot;Resultado binário de Bechdel&amp;quot;) +
coord_cartesian(ylim = c(0, 15))
&lt;/code>&lt;/pre></description></item><item><title>Lab 3.1</title><link>/disciplinas/intror_master/lab31/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab31/</guid><description>&lt;p>A &lt;strong>Unidade 3&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/p>
&lt;ul>
&lt;li>Manipulação e transformação de dados no R: funções para manipulação e tratamento de dados.&lt;/li>
&lt;li>Estatística descritiva e mineração de dados&lt;/li>
&lt;/ul>
&lt;h2 id="diretrizes-gerais">&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EcU3lYCIuexHvd6r57WRh8kBI8DepOiAIe1rWevMHgT-nA">Arquivo&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>Siga as diretrizes da atividade.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio da tarefa no Sigaa&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>&lt;/hr>
&lt;h2 id="manipulação-de-dados">&lt;strong>Manipulação de dados&lt;/strong>&lt;/h2>
&lt;h3 id="exercício-1">Exercício 1.&lt;/h3>
&lt;p>Carregue os dados no seu ambiente.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># From TidyTuesday: https://github.com/rfordatascience/tidytuesday/blob/master/data/2020/2020-02-11/readme.md
hotels &amp;lt;- read_csv(&amp;quot;https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-02-11/hotels.csv&amp;quot;)
&lt;/code>&lt;/pre>&lt;h3 id="exercício-2">Exercício 2.&lt;/h3>
&lt;p>As pessoas estão viajando por um capricho?
Vamos ver&amp;hellip;&lt;/p>
&lt;p>Preencha os espaços em branco para filtragem de reservas de hotel onde o hóspede é &lt;strong>não&lt;/strong> dos EUA (código do país &lt;code>USA&lt;/code>) e o &lt;code>lead_time&lt;/code> é menos de 1 dia.&lt;/p>
&lt;p>&lt;strong>Nota:&lt;/strong> Você precisará definir &lt;code>eval=TRUE&lt;/code> quando tiver uma resposta que queira experimentar.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
# on the fly
hotels %&amp;gt;%
filter(
country != &amp;quot;USA&amp;quot;,
lead_time &amp;lt; 1
)
# Com registro de objeto
hotel &amp;lt;- hotels %&amp;gt;%
filter(country != &amp;quot;USA&amp;quot;, lead_time &amp;lt; 1) %&amp;gt;%
select(country, lead_time)
# Sem pipe
hotels_sem_pipe &amp;lt;- filter(hotels, country != &amp;quot;USA&amp;quot;, lead_time &amp;lt; 1)
hotels_sem_pipe &amp;lt;- select(hotels_sem_pipe, country, lead_time)
&lt;/code>&lt;/pre>&lt;h3 id="exercício-3">Exercício 3.&lt;/h3>
&lt;p>Quantas marcações envolvem pelo menos 1 criança &lt;strong>ou&lt;/strong> bebê?&lt;/p>
&lt;p>No seguinte &lt;code>chunk&lt;/code>, substitua&lt;/p>
&lt;ul>
&lt;li>&lt;code>[AT LEAST]&lt;/code> com o operador lógico para &amp;ldquo;pelo menos&amp;rdquo; (em dois lugares)&lt;/li>
&lt;li>&lt;code>[OR]&lt;/code> com o operador lógico para &amp;ldquo;ou&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Nota:&lt;/strong> Você precisará definir &lt;code>eval=TRUE&lt;/code> quando tiver uma resposta que queira experimentar.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">hotels %&amp;gt;%
filter(children &amp;gt;= 1 | babies &amp;gt;= 1)
# Com registro de objeto
hotel_bebe_chil &amp;lt;- hotels %&amp;gt;%
filter(children &amp;gt;= 1 | babies &amp;gt;= 1)
# Sem pipe
hotel_bebe_chil_sem_pipe &amp;lt;- filter(hotels, children &amp;gt;= 1 | babies &amp;gt;= 1)
&lt;/code>&lt;/pre>&lt;h3 id="exercício-4">Exercício 4.&lt;/h3>
&lt;p>Você acha que é mais provável encontrar reservas com crianças ou bebês em hotéis urbanos ou resorts hoteleiros?
Teste sua intuição.&lt;/p>
&lt;p>Usando &lt;code>filter()&lt;/code> determine o número de reservas em hotéis resort que têm mais de 1 criança &lt;strong>ou&lt;/strong> bebê no quarto?&lt;/p>
&lt;p>Então, faça o mesmo para hotéis urbanos, e compare o número de linhas no dataframe filtrado resultantes.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># Com registro de objeto
hotel_bebe_chil_resort &amp;lt;- hotels %&amp;gt;%
filter(children &amp;gt;= 1 | babies &amp;gt;= 1) %&amp;gt;%
filter(hotel == &amp;quot;Resort Hotel&amp;quot;)
# Sem pipe
hotel_bebe_chil_sem_pipe &amp;lt;- filter(hotels, children &amp;gt;= 1 | babies &amp;gt;= 1)
hotel_bebe_chil_resort_sem_pipe &amp;lt;- filter(hotel_bebe_chil_resort, hotel == &amp;quot;Resort Hotel&amp;quot;)
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># Com registro de objeto
hotel_bebe_chil_city &amp;lt;- hotels %&amp;gt;%
filter(children &amp;gt;= 1 | babies &amp;gt;= 1) %&amp;gt;%
mutate(hotel = tolower(hotel)) %&amp;gt;%
filter(hotel == &amp;quot;city hotel&amp;quot;)
# Sem pipe
hotel_bebe_chil_sem_pipe &amp;lt;- filter(hotels, children &amp;gt;= 1 | babies &amp;gt;= 1)
hotel_bebe_chil_city_sem_pipe &amp;lt;- filter(hotel_bebe_chil_sem_pipe, hotel == &amp;quot;City Hotel&amp;quot;)
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">hotel_bebe_chil_class &amp;lt;- hotels %&amp;gt;%
filter(children &amp;gt;= 1 | babies &amp;gt;= 1) %&amp;gt;%
group_by(hotel) %&amp;gt;%
summarise(n = max(stays_in_weekend_nights))
&lt;/code>&lt;/pre>&lt;h3 id="exercício-5">Exercício 5.&lt;/h3>
&lt;p>Criar uma tabela de freqüência do número de &lt;code>adults&lt;/code> em uma reserva.&lt;/p>
&lt;p>Mostre os resultados em ordem decrescente para que a observação mais comum esteja no topo.&lt;/p>
&lt;p>Qual é o número mais comum de adultos em reservas neste conjunto de dados?&lt;/p>
&lt;p>Há algum resultado surpreendente?&lt;/p>
&lt;p>&lt;strong>Nota:&lt;/strong> Não esqueça de rotular também seu &lt;code>chunk&lt;/code> R (onde diz &lt;code>lable-me-1&lt;/code>).
Seu rótulo deve ser curto, informativo, e não deve incluir espaços.
Também não deve repetir uma etiqueta anterior, caso contrário o R Markdown lhe dará um erro sobre a repetição de etiquetas R em pedaços.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
&lt;/code>&lt;/pre>&lt;h3 id="exercício-6">Exercício 6.&lt;/h3>
&lt;p>Repita o exercício 5, uma vez para reservas canceladas (&lt;code>is_canceled&lt;/code> codificado como 1) e uma vez para reservas não canceladas (&lt;code>is_canceled&lt;/code> codificado como 0).&lt;/p>
&lt;p>O que isto revela sobre os resultados surpreendentes que você observou no exercício anterior?&lt;/p>
&lt;p>&lt;strong>Note:&lt;/strong> Não se esqueça de rotular também seu &lt;code>chunk&lt;/code> de R (onde diz &lt;code>label-me-2&lt;/code>).&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># add code here
# pay attention to correctness and code style
&lt;/code>&lt;/pre>&lt;h3 id="exercício-7">Exercício 7.&lt;/h3>
&lt;p>Calcular a tarifa mínima, média, mediana e máxima média diária (&lt;code>adr&lt;/code>) agrupados por tipo de &lt;code>hotel&lt;/code> para que você possa obter estas estatísticas separadamente para hotéis de resorts e cidades.&lt;/p>
&lt;p>Que tipo de hotel é mais caro, em média?&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># add code here
# pay attention to correctness and code style
&lt;/code>&lt;/pre>&lt;h3 id="exercício-8">Exercício 8.&lt;/h3>
&lt;p>Observamos dois valores incomuns nas estatísticas resumidas acima &amp;ndash; um mínimo negativo, e um máximo muito alto).
Que tipos de hotéis são estes?&lt;/p>
&lt;p>Localize estas observações no conjunto de dados e descubra a data de chegada (ano e mês), assim como quantas pessoas (adultos, crianças e bebês) permaneceram no quarto.&lt;/p>
&lt;p>Você pode investigar os dados no espectador para localizar estes valores, mas de preferência você deve identificá-los de forma reprodutível com algum código.&lt;/p>
&lt;p>&lt;strong>Dica:&lt;/strong> Por exemplo, você pode &lt;code>filter&lt;/code> para o dado quantidade &lt;code>adr&lt;/code> e &lt;code>select&lt;/code> as colunas relevantes.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># add code here
# pay attention to correctness and code style
&lt;/code>&lt;/pre>&lt;h4 id="dicionário-de-dados">Dicionário de dados&lt;/h4>
&lt;p>Abaixo está o dicionário de dados completo.
Note que é longo (há muitas variáveis nos dados), mas utilizamos um conjunto limitado de variáveis para nossa análise.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">variable&lt;/th>
&lt;th style="text-align:left">class&lt;/th>
&lt;th style="text-align:left">description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">hotel&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Hotel (H1 = Resort Hotel or H2 = City Hotel)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">is_canceled&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Value indicating if the booking was canceled (1) or not (0)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">lead_time&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of days that elapsed between the entering date of the booking into the PMS and the arrival date&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">arrival_date_year&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Year of arrival date&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">arrival_date_month&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Month of arrival date&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">arrival_date_week_number&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Week number of year for arrival date&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">arrival_date_day_of_month&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Day of arrival date&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">stays_in_weekend_nights&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of weekend nights (Saturday or Sunday) the guest stayed or booked to stay at the hotel&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">stays_in_week_nights&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of week nights (Monday to Friday) the guest stayed or booked to stay at the hotel&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">adults&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of adults&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">children&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of children&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">babies&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of babies&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">meal&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Type of meal booked. Categories are presented in standard hospitality meal packages: &lt;br> Undefined/SC – no meal package;&lt;br>BB – Bed &amp;amp; Breakfast; &lt;br> HB – Half board (breakfast and one other meal – usually dinner); &lt;br> FB – Full board (breakfast, lunch and dinner)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">country&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Country of origin. Categories are represented in the ISO 3155–3:2013 format&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">market_segment&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Market segment designation. In categories, the term &amp;ldquo;TA&amp;rdquo; means &amp;ldquo;Travel Agents&amp;rdquo; and &amp;ldquo;TO&amp;rdquo; means &amp;ldquo;Tour Operators&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">distribution_channel&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Booking distribution channel. The term &amp;ldquo;TA&amp;rdquo; means &amp;ldquo;Travel Agents&amp;rdquo; and &amp;ldquo;TO&amp;rdquo; means &amp;ldquo;Tour Operators&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">is_repeated_guest&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Value indicating if the booking name was from a repeated guest (1) or not (0)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">previous_cancellations&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of previous bookings that were cancelled by the customer prior to the current booking&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">previous_bookings_not_canceled&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of previous bookings not cancelled by the customer prior to the current booking&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">reserved_room_type&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Code of room type reserved. Code is presented instead of designation for anonymity reasons&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">assigned_room_type&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Code for the type of room assigned to the booking. Sometimes the assigned room type differs from the reserved room type due to hotel operation reasons (e.g. overbooking) or by customer request. Code is presented instead of designation for anonymity reasons&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">booking_changes&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of changes/amendments made to the booking from the moment the booking was entered on the PMS until the moment of check-in or cancellation&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">deposit_type&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Indication on if the customer made a deposit to guarantee the booking. This variable can assume three categories:&lt;br>No Deposit – no deposit was made;&lt;br>Non Refund – a deposit was made in the value of the total stay cost;&lt;br>Refundable – a deposit was made with a value under the total cost of stay.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">agent&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">ID of the travel agency that made the booking&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">company&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">ID of the company/entity that made the booking or responsible for paying the booking. ID is presented instead of designation for anonymity reasons&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">days_in_waiting_list&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of days the booking was in the waiting list before it was confirmed to the customer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">customer_type&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Type of booking, assuming one of four categories:&lt;br>Contract - when the booking has an allotment or other type of contract associated to it;&lt;br>Group – when the booking is associated to a group;&lt;br>Transient – when the booking is not part of a group or contract, and is not associated to other transient booking;&lt;br>Transient-party – when the booking is transient, but is associated to at least other transient booking&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">adr&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Average Daily Rate as defined by dividing the sum of all lodging transactions by the total number of staying nights&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">required_car_parking_spaces&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of car parking spaces required by the customer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">total_of_special_requests&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Number of special requests made by the customer (e.g. twin bed or high floor)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">reservation_status&lt;/td>
&lt;td style="text-align:left">character&lt;/td>
&lt;td style="text-align:left">Reservation last status, assuming one of three categories:&lt;br>Canceled – booking was canceled by the customer;&lt;br>Check-Out – customer has checked in but already departed;&lt;br>No-Show – customer did not check-in and did inform the hotel of the reason why&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">reservation_status_date&lt;/td>
&lt;td style="text-align:left">double&lt;/td>
&lt;td style="text-align:left">Date at which the last status was set. This variable can be used in conjunction with the ReservationStatus to understand when was the booking canceled or when did the customer checked-out of the hotel&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="junção-de-dataframes">&lt;strong>Junção de dataframes&lt;/strong>&lt;/h2>
&lt;h3 id="exercício-1-1">Exercício 1.&lt;/h3>
&lt;p>Carregar arquivos&lt;/p>
&lt;ol>
&lt;li>Façam o download do arquivo .zip.&lt;/li>
&lt;li>Removam os arquivos de dados do arquivo .zip.&lt;/li>
&lt;li>Carregue os arquivos de dados usando a função &lt;code>read_csv&lt;/code> e atribuindo cada conjunto de dados a um objeto&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">professions &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/professions.csv&amp;quot;)
dates &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/dates.csv&amp;quot;)
works &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/works.csv&amp;quot;)
enrolment &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/enrolment.csv&amp;quot;)
survey &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/survey.csv&amp;quot;)
purchases &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/purchases.csv&amp;quot;)
prices &amp;lt;- read_csv(&amp;quot;D:/Dropbox/Public/dados/prices.csv&amp;quot;)
&lt;/code>&lt;/pre>&lt;h3 id="exercício-2-1">Exercício 2.&lt;/h3>
&lt;p>Manipulação de dados - mulheres cientistas&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Faça a junção dos dataframes&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ordene por ano de nascimento&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Filtre apenas as linhas que têm informações sobre ano de nascimento e ano de morte&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Encontre as pesquisadoras que estão vivas&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Gere um dataframe considerando apenas a coluna com o nome das cientistas.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">
&lt;/code>&lt;/pre>&lt;h3 id="exercício-3-1">Exercício 3.&lt;/h3>
&lt;p>Manipulação de dados - matrículas&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Gere um dataframe com os alunos matriculados e que responderam estar frequentando as aulas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Gere um dataframe com os alunos matriculados e que responderam &lt;strong>não&lt;/strong> estar frequentando as aulas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Gere um dataframe com os alunos que estão frequentando as aulas e que não estão matriculados.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">
&lt;/code>&lt;/pre>&lt;h3 id="exercício-4-1">Exercício 4.&lt;/h3>
&lt;p>Manipulação de dados - compras&lt;/p>
&lt;ol>
&lt;li>Gere um dataframe com a síntese da soma da receita da loja por consumidor&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">
&lt;/code>&lt;/pre></description></item><item><title>Atividade 5</title><link>/disciplinas/intror_master/atividade5/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/atividade5/</guid><description>&lt;h2 id="esta-atividade-deverá-ser-realizada-até-dia-2211-são-propostas-as-seguintes-atividades">Esta atividade deverá ser realizada até dia &lt;strong>22/11&lt;/strong>. São propostas as seguintes atividades:&lt;/h2>
&lt;ol>
&lt;li>Instale o pacote &lt;code>cepespR&lt;/code>&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code class="language-{r}" data-lang="{r}">devtools::install_github(&amp;quot;Cepesp-Fgv/cepesp-r&amp;quot;)
&lt;/code>&lt;/pre>&lt;ol start="2">
&lt;li>Baixe o arquivo .Rmd e o .csvb e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/ETG7uY5TF9ZHlNv70InRlLwBtCYguNA9Sw-QtdIX0qSLwA?e=wTD4jf">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;ol start="3">
&lt;li>
&lt;p>Resolva as questões.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Gere um tipo de documento .Rmd de sua preferência.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Envie por email (&lt;a href="mailto:renataoliveira@gmail.com">renataoliveira@gmail.com&lt;/a> ou &lt;a href="mailto:renataoliveira@cefetmg.br">renataoliveira@cefetmg.br&lt;/a>) o arquivo .Rmd e o arquivo gerado.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Agradecimento: Leo Barone pelo maravilhoso tutorial!&lt;/strong>&lt;/p>
&lt;h1 id="botando-o-computador-para-trabalhar">Botando o computador para trabalhar&lt;/h1>
&lt;p>Se há um tutorial sobre lógica de programação, é este. Os tópicos deste tutorial são os mais importantes para que possamos escrever algoritmos e botar o computador para fazer o que sabe de melhor: repetir instruções e tarefas. Veremos, em primeiro lugar, operadores relacionais e lógicos e, a seguir, cláusulas condicionais, loops e funções.&lt;/p>
&lt;h2 id="operadores-relacionais">Operadores relacionais&lt;/h2>
&lt;p>Uma das especialidades do computador é verificar se proposições simples são verdadeiras ou falsas. &lt;strong>Operadores relacionais&lt;/strong> servem para verificar se objetos são iguais, diferentes, maiores ou menores. São seis operadores relacionais e a tabela abaixo apresenta os seus símbolos.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Operador&lt;/th>
&lt;th style="text-align:center">Símbolo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Igual&lt;/td>
&lt;td style="text-align:center">==&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Diferente&lt;/td>
&lt;td style="text-align:center">!=&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Maior&lt;/td>
&lt;td style="text-align:center">&amp;gt;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Maior ou igual&lt;/td>
&lt;td style="text-align:center">&amp;gt;=&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Menor&lt;/td>
&lt;td style="text-align:center">&amp;lt;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Menor ou igual&lt;/td>
&lt;td style="text-align:center">&amp;lt;=&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Não discutiremos todas as regras de comparação de objetos, mas passaremos por um conjunto grande de exemplos a partir do qual elas podem ser inferidas.&lt;/p>
&lt;p>Vamos começar com alguns exemplos simples:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">42 == 41
42 != 41
(2 + 2) == (3 + 1)
(2 + 2) != (3 + 1)
5 &amp;gt; 3
5 &amp;lt; 3
42 &amp;gt; 42
42 &amp;lt; 41
42 &amp;gt;= 42
42 &amp;lt;= 41
&lt;/code>&lt;/pre>&lt;p>Antes de avançar, tenha certeza que entendeu os exemplos acima.&lt;/p>
&lt;p>Operadores relacionais também vale para textos:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">&amp;quot;texto&amp;quot; == &amp;quot;texto&amp;quot;
&amp;quot;texto&amp;quot; == &amp;quot;texTo&amp;quot;
&amp;quot;texto&amp;quot; != &amp;quot;texto&amp;quot;
&lt;/code>&lt;/pre>&lt;p>Note no segundo exemplo que o R é &amp;ldquo;case sensitive&amp;rdquo;, ou seja, diferencia maiúsculas de minúsculas ao comparar textos.&lt;/p>
&lt;p>Textos também podem ser ordenados (lexicograficamente, isto é, alfabeticamente):&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">&amp;quot;a&amp;quot; &amp;gt; &amp;quot;b&amp;quot;
&amp;quot;a&amp;quot; &amp;lt; &amp;quot;b&amp;quot;
&amp;quot;A&amp;quot; &amp;lt; &amp;quot;b&amp;quot;
&amp;quot;A&amp;quot; &amp;gt; &amp;quot;a&amp;quot;
&lt;/code>&lt;/pre>&lt;p>Inclusive palavras inteiras e sentenças:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">&amp;quot;cachorro&amp;quot; &amp;lt; &amp;quot;cachorro quente&amp;quot;
&amp;quot;churrasco de gato&amp;quot; &amp;gt; &amp;quot;cachorro quente&amp;quot;
&lt;/code>&lt;/pre>&lt;p>E valores lógicos? Veja se entende o que acontece nos exemplos abaixo:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">TRUE == 1
FALSE == 0
TRUE &amp;gt; FALSE
&lt;/code>&lt;/pre>&lt;p>Podemos comparar valores armazenados em variáveis da mesma maneira que fizemos nos exemplos até aqui:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">x &amp;lt;- 5
y &amp;lt;- 10
x &amp;gt; y
&lt;/code>&lt;/pre>&lt;h2 id="operadores-relacionais-e-vetores">Operadores relacionais e vetores&lt;/h2>
&lt;p>É possível comparar um vetor com um valor. Neste caso, cada elemento do vetor é comparado individualmente ao valor e o resultado é um vetor lógico de tamanho igual ao vetor comparado.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">votos16 &amp;lt;- c(1030, 551, 992, 345, 203, 2037)
votos16 &amp;gt;= 1000
&lt;/code>&lt;/pre>&lt;p>Vamos usar o vetor &amp;ldquo;votos16&amp;rdquo;, que contém votos de candidatos fictícios em 2016, com os votos dos mesmo candidatos em 2012:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">votos12 &amp;lt;- c(890, 354, 950, 400, 50, 3416)
votos16 &amp;gt; votos12
&lt;/code>&lt;/pre>&lt;p>Veja que, na comparação entre dois vetores, os elementos são comparados par a par de acordo com a sua posição no vetor. O vetor lógico resultante tem o mesmo tamanho dos vetores comparados.&lt;/p>
&lt;h2 id="operadores-lógicos-booleanos">Operadores Lógicos (Booleanos)&lt;/h2>
&lt;p>É perfeitamente possível combinar proposições com os &lt;strong>operadores lógicos&lt;/strong> &amp;ldquo;e&amp;rdquo;, &amp;ldquo;ou&amp;rdquo; e &amp;ldquo;não&amp;rdquo;:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Operador&lt;/th>
&lt;th style="text-align:center">Símbolo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>E&lt;/td>
&lt;td style="text-align:center">&amp;amp;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ou&lt;/td>
&lt;td style="text-align:center">|&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Não&lt;/td>
&lt;td style="text-align:center">!&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Por exemplo, se queremos verificar todos os candidatos que obtiveram acima de 500 (exclusive) &lt;strong>E&lt;/strong> abaixo de 1500 (inclusive) votos, fazemos:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">votos16 &amp;gt; 500 &amp;amp; votos16 &amp;lt;= 1500
&lt;/code>&lt;/pre>&lt;p>Veja a tabela de possibilidades de combinação de duas proposições com a conjunção &amp;ldquo;e&amp;rdquo;:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Proposição 1&lt;/th>
&lt;th>Proposição 2&lt;/th>
&lt;th>Combinação&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>TRUE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TRUE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FALSE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FALSE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Se o valor atende às duas condições, então o resultado é TRUE. Se ao menos uma proposição é falsa, sob a conjunção &amp;ldquo;e&amp;rdquo;, então a combinação das proposições também é.&lt;/p>
&lt;p>Com o operador &amp;ldquo;Ou&amp;rdquo;, a combinação de proposições é verdadeira se pelo menos uma delas for verdadeira.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">votos16 &amp;lt; 500 | votos12 &amp;gt; 1500
&lt;/code>&lt;/pre>&lt;p>Veja a tabela de possibilidades de combinação de duas proposições com a conjunção &amp;ldquo;ou&amp;rdquo;:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Proposição 1&lt;/th>
&lt;th>Proposição 2&lt;/th>
&lt;th>Combinação&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>TRUE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TRUE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FALSE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;td>TRUE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FALSE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;td>FALSE&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Finalmente, o operador lógico &amp;ldquo;não&amp;rdquo; tem a função de reverter um proposição:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">!TRUE
!(5 &amp;gt; 3)
!(votos16 &amp;gt; 500 &amp;amp; votos16 &amp;lt;= 1500)
&lt;/code>&lt;/pre>&lt;p>Lembre-se que, quando trabalhamos com vetores lógicos, podemos tratá-los como se fossem zeros e uns, tal qual no exemplo:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">sum(votos16 &amp;gt; votos12)
&lt;/code>&lt;/pre>&lt;h2 id="cláusulas-condicionais">Cláusulas condicionais&lt;/h2>
&lt;p>Um dos usos mais importantes dos operadores relacionais e lógicos é na construção de &lt;strong>cláusulas condicionais&lt;/strong>, &amp;ldquo;if&amp;rdquo;, &amp;ldquo;else&amp;rdquo; e &amp;ldquo;else if&amp;rdquo;. Elas são fundamentais para a construção de funções e algoritmos. Veja um uso simples do condicional &lt;em>if&lt;/em>, para o cálculo do valor absoluto de uma variável:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r"># exemplo com x negativo
x &amp;lt;- -23
if (x &amp;lt; 0){
x &amp;lt;- -x
}
print(x)
# exemplo com x positivo
x &amp;lt;- 23
if (x &amp;lt; 0){
x &amp;lt;- -x
}
print(x)
&lt;/code>&lt;/pre>&lt;p>A condição que o &lt;em>if&lt;/em> deve atender vem entre parênteses. A instrução a ser atendida caso a cláusula seja verdadeira vem dentro das chaves. Aliás, é boa prática (na maioria dos casos) abrir as chaves em uma linha, escrever as instruções em outra, e fechar as chaves na linha seguinte ao final das instruções, como no exemplo. Também é boa prática &amp;ldquo;identar&amp;rdquo;, ou seja, desalinhar as instruções do restante do código. Falaremos sobre &amp;ldquo;estilo&amp;rdquo; em algum momento do curso. Por enquanto, apenas observe e não se assuste. Diferentemente de outras linguagens, R não requer identação para funcionar.&lt;/p>
&lt;p>Vamos supor que um candidato teve determinada quantia de votos. Ele precisava de 700 para ser eleito. Vamos criar uma nova variável, &amp;ldquo;status&amp;rdquo;, que receberá valor &amp;ldquo;eleito&amp;rdquo; se &amp;ldquo;votos&amp;rdquo; for maior que 700. Supondo que o candidato recebeu 800 votos, fazemos:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">votos &amp;lt;- 800
if (votos &amp;gt; 700){
status &amp;lt;- &amp;quot;eleito&amp;quot;
}
print(status)
&lt;/code>&lt;/pre>&lt;p>Mas e se quisermos dar o valor &amp;ldquo;nao eleito&amp;rdquo; a &amp;ldquo;status&amp;rdquo; caso ele não tenha recebido mais de 700 votos? Usamos &lt;em>else&lt;/em> para indicar o que fazer em todos os casos em que a condição em &lt;em>if&lt;/em> não foi atendida.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">if (votos &amp;gt; 700){
status &amp;lt;- &amp;quot;eleito&amp;quot;
} else {
status &amp;lt;- &amp;quot;nao eleito&amp;quot;
}
print(status)
&lt;/code>&lt;/pre>&lt;p>Por fim, vamos imaginar um regra mais complexa. Se o total de &amp;ldquo;votos&amp;rdquo; do candidato for maior que 1200, então ele está eleito. Se a votação tiver ficado entre 700 (exclusive) e 1200 (inclusive), ele recebe &amp;ldquo;status&amp;rdquo; igual a &amp;ldquo;suplente&amp;rdquo;. Com 700 votos ou menos, o &amp;ldquo;status&amp;rdquo; é não eleito.&lt;/p>
&lt;p>Veja como traduzir a regra acima em código usando &lt;em>if&lt;/em>, &lt;em>else if&lt;/em> e &lt;em>else&lt;/em>.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">if (votos &amp;gt; 1200){
status &amp;lt;- &amp;quot;eleito&amp;quot;
} else if (votos &amp;gt; 700 &amp;amp; votos &amp;lt;= 1200){
status &amp;lt;- &amp;quot;suplente&amp;quot;
} else {
status &amp;lt;- &amp;quot;nao eleito&amp;quot;
}
print(status)
&lt;/code>&lt;/pre>&lt;p>Outro exemplos simples do uso de condicionais, agora com uma variável de textos&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">partido &amp;lt;- &amp;quot;PMDB&amp;quot;
if (partido == &amp;quot;PMDB&amp;quot; | partido == &amp;quot;PSD&amp;quot; | partido == &amp;quot;DEM&amp;quot;) {
print(&amp;quot;governo&amp;quot;)
} else {
print(&amp;quot;oposição&amp;quot;)
}
&lt;/code>&lt;/pre>&lt;p>É possível complicar bastante o uso dos condicionais &amp;ldquo;aninhando&amp;rdquo; uma cláusula dentro da outra e criando &amp;ldquo;labirintos&amp;rdquo; de condições. Fazer isso, porém, é mais uma questão de lógica do que de uso da linguagem. Não há variações relevantes do uso em relação aos exemplos simples apresentados acima. Se você consegue fazer os condicionais em papel e caneta e se os exemplos anteriores tiverem ficado claros, então consegue fazê-los em R.&lt;/p>
&lt;h2 id="exercício">Exercício&lt;/h2>
&lt;ul>
&lt;li>Anote quantos cafés você tomou cada dia esta semana. Guarde o valor na variavel &amp;lsquo;cafe&amp;rsquo;.&lt;/li>
&lt;li>Represente com condicionais a regra: se você tomou 3 ou mais, imprima &amp;ldquo;Hummm, café!&amp;rdquo;. Se você tomou menos de 3, imprima &amp;ldquo;zzzzzz&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h2 id="repetindo-tarefas---while-loop">Repetindo tarefas - while loop&lt;/h2>
&lt;p>Uma das vantagens dos computadores em relação aos seres humanos é a capacidade de repetir tarefas a um custo baixo. Vamos ver um exemplo simples: con tar até 42. Usaremos como recurso um &lt;em>while&lt;/em> loop, ou seja, daremos um estado inicial, uma condição e uma instrução para o computador e pediremos para ele repetir a instrução &lt;strong>enquanto&lt;/strong> a condição for atendida.&lt;/p>
&lt;p>Em nosso caso, a instrução será: imprima o número &amp;ldquo;atual&amp;rdquo; (você já entenderá isso), armazenado na variável &amp;ldquo;contador&amp;rdquo;, e some mais um. A condição será: enquanto a variável &amp;ldquo;contador&amp;rdquo; for menor ou igual a 42. Se vamos começar a contar a partir do 1, nosso estado inicial será igualar o &amp;ldquo;contador&amp;rdquo; a 1. Veja como fica o código:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">contador &amp;lt;- 1
while (contador &amp;lt;= 42) {
print(contador)
contador &amp;lt;- contador + 1
}
print(contador)
&lt;/code>&lt;/pre>&lt;p>Traduzindo para o português: &amp;ldquo;enquanto o contador for menor ou igual a 42, imprima e some um&amp;rdquo;. A estrutura de um &lt;em>while&lt;/em> loop é sempre: &amp;ldquo;enquanto&amp;rdquo; (condição), &amp;ldquo;faça&amp;rdquo; (instrução).&lt;/p>
&lt;p>Veja que precisamos planejar muito bem o &lt;em>while&lt;/em> loop. Se, por exemplo, esquecermos de pensar como a condição inicial será alterada a cada &lt;strong>iteração&lt;/strong> (sem o &amp;ldquo;n&amp;rdquo; mesmo, pois é diferente de &amp;ldquo;interação&amp;rdquo;), corremos o risco de criar um &amp;ldquo;loop infinito&amp;rdquo;. O critério de parada (condição entre parênteses) deve ser atendido em algum ponto do programa para que ele seja interrompido.&lt;/p>
&lt;p>Vamos complicar. Seguiremos contando até 42, mas todas as vezes em que o número for par (ou seja, múltiplo de 2), deixaremos de imprimir o número. Como fazer isso? Com &lt;em>if&lt;/em>.&lt;/p>
&lt;p>Dica: para saber se um número é divisível por outro, basta usar o resto da divisão (consulte o tutorial anterior %%) e checar se é igual a zero.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">contador &amp;lt;- 1
while (contador &amp;lt;= 42) {
if ((contador %% 2) != 0){
print(contador)
}
contador &amp;lt;- contador + 1
}
print(contador)
&lt;/code>&lt;/pre>&lt;p>Veja que temos agora um código &amp;ldquo;aninhado&amp;rdquo;, pois colocamos um condicional dentro de um loop. Novamente, combinar estruturas de código é mais um problema de lógica do que de linguagem e, se você consegue fazer no papel, consegue traduzir para o R.&lt;/p>
&lt;h2 id="repetindo-tarefas---for-loop">Repetindo tarefas - for loop&lt;/h2>
&lt;p>E se em vez de repetir uma tarefa até atingir uma condição já soubermos quantas vezes queremos repetí-la? Neste caso, podemos usar o &lt;em>for&lt;/em> loop. O loop não será mais do tipo &amp;ldquo;enquanto x faça y&amp;rdquo; mas &amp;ldquo;para todo i &amp;lsquo;em&amp;rsquo; a até b&amp;rdquo;. Veja como o exemplo de contar até 42 ficaria com &lt;em>for&lt;/em> loop:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">for (i in 1:42){
print(i)
}
&lt;/code>&lt;/pre>&lt;p>Neste caso, lemos &amp;ldquo;para cada i &amp;lsquo;em&amp;rsquo; 1 até 42, faça&amp;rdquo;. O que o &lt;em>for&lt;/em> loop faz é variar o i a cada iteração de acordo com a sequência estabelecida. Outro exemplo, agora na ordem reversa:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">for (i in 10:-10){
print(i)
}
&lt;/code>&lt;/pre>&lt;p>Agora com a condição de não imprimir os pares:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">for (i in 1:42){
if((i %% 2) != 0){
print(i)
}
}
&lt;/code>&lt;/pre>&lt;p>&lt;em>for&lt;/em> loops não precisam ser apenas com números. Na verdade, você pode colocar após o &amp;ldquo;in&amp;rdquo; qualquer vetor. Por exemplo, um vetor das regiões brasileiras (ou UFs, se você tiver paciência de escrever todas):&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">vetor_regioes &amp;lt;- c(&amp;quot;norte&amp;quot;, &amp;quot;nordeste&amp;quot;, &amp;quot;sudeste&amp;quot;,&amp;quot;sul&amp;quot;, &amp;quot;centro-oeste&amp;quot;)
for (regiao in vetor_regioes){
print(regiao)
}
&lt;/code>&lt;/pre>&lt;p>Se você já trabalhou com dados eleitorais brasileiros, você certamente teve de abrir diversos arquivos semelhantes, cada um contendo informações de um estado brasileiro. Ou ainda, se você já obteve informações na internet talvez tenha precisado &amp;ldquo;passar&amp;rdquo; por diversas páginas semelhantes. Loops resolvem problemas desse tipo: eles repetem procedimentos variando apenas um índice. Aprender a usar loops economiza um tempo enorme, pois conseguimos automatizar tarefas ou, pelo menos, escrever um código mais curto para aplicar o mesmo comando inúmeras vezes.&lt;/p>
&lt;p>Vamos parar por aqui com &lt;em>loops&lt;/em> e voltaremos a eles para fazermos exercícios.&lt;/p>
&lt;h2 id="escrevendo-funções">Escrevendo funções&lt;/h2>
&lt;p>Ao longo dos três tutorais que fizemos usamos diversas funções e já estamos acostumados com elas. Vamos agora aprender a construir funções simples. Vamos do exemplo à aplicação. E nosso exemplo será, novamente, um conversor de farenheit para celsius:&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">conversor &amp;lt;- function(farenheit){
celsius &amp;lt;- ((farenheit - 32) / 9) * 5
return(celsius)
}
conversor(212)
conversor(32)
&lt;/code>&lt;/pre>&lt;p>Temos vários elementos no &amp;ldquo;construtor&amp;rdquo; de funções. Em primeiro lugar, criamos a função como criamos um objeto. Quer dizer, escolhemos um nome para ela e atribuímos a função criada a esse nome.&lt;/p>
&lt;p>Para criar uma função, usamos &lt;em>function&lt;/em>. Basicamente, o &amp;ldquo;construtor&amp;rdquo; tem duas partes: os argumentos da função, que inserimos no parênteses após &lt;em>function&lt;/em>; e o corpo da função em chaves, que utiliza os argumentos para realizar uma tarefa e retorna um resultado, indicado pela função &lt;em>return&lt;/em>.&lt;/p>
&lt;h2 id="exercício-1">Exercício&lt;/h2>
&lt;p>Crie uma função chamada &amp;ldquo;quadrado&amp;rdquo; que recebe um número &amp;ldquo;x&amp;rdquo; e retorna o quadrado de x.&lt;/p>
&lt;h2 id="reposta">Reposta&lt;/h2>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">quadrado &amp;lt;- function(x){
resultado &amp;lt;- x * x
return(resultado)
}
quadrado(4)
quadrado(17)
&lt;/code>&lt;/pre>&lt;h2 id="exercício-2">Exercício&lt;/h2>
&lt;ul>
&lt;li>Crie uma função que recebe um valor em reais e retorna o valor em dólares (use a cotação do dia e coloque como nota no script)&lt;/li>
&lt;li>Crie uma função que recebe um valor em reais e uma cotação do dólar e retorna o valor em dólares (ou seja, que contém 2 parâmetros).&lt;/li>
&lt;/ul>
&lt;h3 id="dica-de-leitura">Dica de Leitura&lt;/h3>
&lt;p>Uma boa leitura para acompanhar esta parte do curso são as partes II e III do livro &lt;em>Hands-on Programming With R&lt;/em>, de Garret Grolemund.&lt;/p></description></item><item><title>Lab 3.2</title><link>/disciplinas/intror_master/lab32/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab32/</guid><description>&lt;p>A &lt;strong>Unidade 3&lt;/strong> é estruturada considerando os seguintes tópicos:&lt;/p>
&lt;ul>
&lt;li>Manipulação e transformação de dados no R: funções para manipulação e tratamento de dados.&lt;/li>
&lt;li>Estatística descritiva e mineração de dados&lt;/li>
&lt;/ul>
&lt;h2 id="diretrizes-gerais">&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h2>
&lt;ol>
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EeohRlLO7OtCtKdHO72GS2oBc8B1LBdlZuoRt02jIw2LLg?e=dUCXFm">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/%E2%9D%8C/g/personal/renataoliveira_cefetmg_br/EfOboEtruQNLnK1Iz2RynCcBNxYE6pz_gBbjOIUWRSodpw?e=y0igVw">Dados_1&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/%E2%9D%8C/g/personal/renataoliveira_cefetmg_br/EZBh8qqZVJVFsZu3pfmdbPYBH-4XbbGRkrkpybi0pTSObA?e=4koetd">Dados_2&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>Siga as diretrizes da atividade.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio da tarefa no Sigaa&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>&lt;/hr>
&lt;h2 id="manipulação-de-dados">&lt;strong>Manipulação de dados&lt;/strong>&lt;/h2>
&lt;h3 id="exercício-1">Exercício 1.&lt;/h3>
&lt;p>Carregue os dados no seu ambiente.&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-{r" data-lang="{r">
dados1 &amp;lt;- read_csv(&amp;quot;&amp;quot;)
dados2 &amp;lt;- read_csv(&amp;quot;&amp;quot;)
&lt;/code>&lt;/pre>&lt;h3 id="exercício-2">Exercício 2.&lt;/h3>
&lt;p>Responda as seguintes perguntas:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Qual país historicamente ganhou mais medalhas nas olimpíadas de verão? Quantas foram? E qual a representação das mulheres nessa quantidade?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Demonstre o ranking de medalhas por país por ano olímpico separando os dados em olimpíadas de verão e de inverno.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Considere as olimpíadas de verão: para o país com o maior número de medalhas, demonstre o número de medalhas conquistadas por mulheres e o número de medalhas conquistadas por homens (considere as medalhas totais, levando em conta os atletas (medalhas) em esportes coletivos).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Qual país ganhou mais medalhas no volei masculino? Qual país ganhou mais medalhas no volei feminino?&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Lab 4.1</title><link>/disciplinas/intror_master/lab41/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab41/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="juntando-dados" class="section level1">
&lt;h1>Juntando dados&lt;/h1>
&lt;p>Nessa atividade você aprenderá a fazer a união e a junção (cruzamento) de dois dataframes usando o &lt;code>tidyverse&lt;/code>.&lt;/p>
&lt;p>A &lt;strong>união de dados&lt;/strong> é mais intuitiva. Basta ter a mesma quantidade de campos e que estes estejam “alinhados”. A função mais usada para isso é o famoso &lt;code>rbind()&lt;/code> (Row Bind). Caso os campos tenham exatamente os mesmos nomes e tipo, o &lt;code>rbind()&lt;/code> consegue fazer a união perfeitamente.&lt;/p>
&lt;p>O &lt;strong>cruzamento de dados (junção)&lt;/strong> é um pouco mais complexo, mas nem por isso chega a ser algo difícil.&lt;/p>
&lt;p>Para entender-se como fazer “joins” (cruzamentos), é preciso compreender-se o conceito de chave. Entenda chave como uma coluna que está presente da mesma forma em dois conjuntos de dados distintos. O conceito completo de chave é bem mais complexo que isto, mas, para começarmos a entender e usar os joins, basta usar essa intuição.&lt;/p>
&lt;p>Tendo esse conceito simplificado de chave em mente, a primeira coisa que se deve fazer quando for preciso cruzar dois conjuntos de dados é tentar identificar quais os campos chaves, ou seja, quais campos estão presentes nos dois grupos.&lt;/p>
&lt;p>O que acontece quando nem todos os códigos de um grupo estão no outro? E quando um grupo tem códigos repetidos em várias linhas? Para responder a essas e outras perguntas precisamos conhecer os diferentes tipos de joins. Existe pelo menos uma dezena de tipos de &lt;em>joins&lt;/em>, mas 90% das vezes você precisará apenas dos tipos básicos que explicaremos a seguir. Usaremos o pacote dplyr para aplicar os &lt;em>joins.&lt;/em> O R base possui a função &lt;code>merge()&lt;/code> para &lt;em>joins&lt;/em>, se tiver curiosidade procure mais sobre ela depois.&lt;/p>
&lt;div id="inner-join-ou-apenas-join" class="section level2">
&lt;h2>Inner Join (ou apenas Join)&lt;/h2>
&lt;p>Trata-se do &lt;em>join&lt;/em> mais simples, mais básico e mais usado dentre todos os outros tipos. O seu comportamento mantém no resultado apenas as linhas presentes nos dois conjuntos de dados que estão sendo cruzados. O inner join funciona da seguinte forma:&lt;/p>
&lt;p>A tabela final, após o cruzamento, conterá as linhas com as chaves que estiverem em AMBOS os conjuntos de dados. As linhas com chaves que não estão em ambos serão descartadas. Esta característica torna o &lt;em>inner join&lt;/em> muito útil para fazer-se filtros.&lt;/p>
&lt;/div>
&lt;div id="left-outer-join" class="section level2">
&lt;h2>Left Outer Join&lt;/h2>
&lt;p>Chama-se &lt;em>left outer join&lt;/em> pois todos os registros do “conjunto à esquerda” estarão presentes no resultado final, além dos registros à direita que coincidirem na chave.&lt;/p>
&lt;/div>
&lt;div id="right-outer-join" class="section level2">
&lt;h2>Right Outer Join&lt;/h2>
&lt;p>O princípio é EXATAMENTE o mesmo do left join. A única diferença é a permanência dos registros do conjunto à direita. Podemos chegar ao mesmo resultado anterior apenas mudando os data frames de posição na manipulação.&lt;/p>
&lt;/div>
&lt;div id="full-outer-join" class="section level2">
&lt;h2>Full Outer Join&lt;/h2>
&lt;p>Existem, ainda, as situações em que é necessário preservar todos os registros de ambos os conjuntos de dados. O full join tem essa característica. Nenhum dos conjuntos de dados perderá registros no resultado final, isto é, quando as chaves forem iguais, todos os campos estarão preenchidos. Quando não houver ocorrência das chaves em ambos os lados, será informado &lt;code>NA&lt;/code> em qualquer um deles.&lt;/p>
&lt;/div>
&lt;div id="exercícios" class="section level2">
&lt;h2>Exercícios&lt;/h2>
&lt;div id="diretrizes-gerais" class="section level3">
&lt;h3>&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h3>
&lt;ol style="list-style-type: decimal">
&lt;li>Baixe o arquivo .Rmd e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EZ_UXta-KEZJhsy-TOyqJmMBBh3IW0DHw11PffzU4s9N5Q?e=C04dsD">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;ol start="2" style="list-style-type: decimal">
&lt;li>&lt;p>Siga as diretrizes da atividade.&lt;/p>&lt;/li>
&lt;li>&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>&lt;/li>
&lt;li>&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio do email &lt;a href="mailto:renataoliveira@gmail.com" class="email">renataoliveira@gmail.com&lt;/a>&lt;/strong>.&lt;/p>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;/hr>
&lt;/div>
&lt;div id="exercício-1." class="section level3">
&lt;h3>Exercício 1.&lt;/h3>
&lt;p>Utilizando os dataframes abaixo, gere:&lt;/p>
&lt;ol style="list-style-type: lower-alpha">
&lt;li>&lt;p>um dataframe com os participantes&lt;/p>&lt;/li>
&lt;li>&lt;p>um dataframe com os aprovados&lt;/p>&lt;/li>
&lt;li>&lt;p>um dataframe com os eliminados&lt;/p>&lt;/li>
&lt;/ol>
&lt;p>Faça a junção de todos os tres dataframes em um único objeto.&lt;/p>
&lt;pre class="r">&lt;code>participantes &amp;lt;- data.frame(
Nome = c(&amp;#39;Carlos&amp;#39;, &amp;#39;Maurício&amp;#39;, &amp;#39;Ana Maria&amp;#39;, &amp;#39;Rebeca&amp;#39;, &amp;#39;Patrícia&amp;#39;),
Estado = c(&amp;#39;Brasília&amp;#39;, &amp;#39;Minas Gerais&amp;#39;, &amp;#39;Goiás&amp;#39;, &amp;#39;São Paulo&amp;#39;, &amp;#39;Ceará&amp;#39;),
Idade = c(23, 24, 22, 29, 28)
)
aprovados &amp;lt;- data.frame(
Nome = c(&amp;#39;Carlos&amp;#39;, &amp;#39;Patrícia&amp;#39;),
Pontuacao = c(61, 62)
)
eliminados &amp;lt;- data.frame(
Nome = c(&amp;#39;Maurício&amp;#39;, &amp;#39;Ana Maria&amp;#39;, &amp;#39;Rebeca&amp;#39;),
Pontuacao = c(49, 48, 48)
)&lt;/code>&lt;/pre>
&lt;p>Créditos da atividade:
&lt;a href="https://cdr.ibpad.com.br/juntando-dados.html">Ciência de Dados com R - Introdução. Autores: Saulo Guerra, Paulo Felipe de Oliveira, Robert McDonnell e Sillas Gonzaga&lt;/a>&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div></description></item><item><title>Lab 4.2</title><link>/disciplinas/intror_master/lab42/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab42/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="dados-wide-x-long" class="section level1">
&lt;h1>Dados &lt;em>wide&lt;/em> x &lt;em>long&lt;/em>&lt;/h1>
&lt;div id="exercícios" class="section level2">
&lt;h2>Exercícios&lt;/h2>
&lt;div id="diretrizes-gerais" class="section level3">
&lt;h3>&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h3>
&lt;ol style="list-style-type: decimal">
&lt;li>Baixe o arquivo .Rmd e o .csvb e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/EYmurCXsRpdFukK0xyqRN_kBbANT34n3CeMjjoUxNvhUTQ?e=5o9BbT">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/❌/g/personal/renataoliveira_cefetmg_br/Ednh1eJllo9DjZR5u6J6Q1YBMDz7KXzoF1XtdYdrZpo8MA?e=6NEs85">Arquivo .csv&lt;/a>&lt;/p>
&lt;ol start="2" style="list-style-type: decimal">
&lt;li>&lt;p>Siga as diretrizes da atividade.&lt;/p>&lt;/li>
&lt;li>&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>&lt;/li>
&lt;li>&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio do email &lt;a href="mailto:renataoliveira@gmail.com" class="email">renataoliveira@gmail.com&lt;/a>&lt;/strong>.&lt;/p>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;/hr>
&lt;/div>
&lt;div id="exercício-1." class="section level3">
&lt;h3>Exercício 1.&lt;/h3>
&lt;p>Rode o código para gerar o histograma a seguir:&lt;/p>
&lt;pre class="r">&lt;code># library
library(tidyverse)&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.1.1 v forcats 0.5.1&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()&lt;/code>&lt;/pre>
&lt;pre class="r">&lt;code># Build dataset with different distributions
data &amp;lt;- data.frame(
type = c(rep(&amp;quot;variable 1&amp;quot;, 1000), rep(&amp;quot;variable 2&amp;quot;, 1000)),
value = c(rnorm(1000), rnorm(1000, mean = 0, sd = 5))
)
# Represent it
p &amp;lt;- data %&amp;gt;%
ggplot(aes(x=value, fill=type)) +
geom_histogram( color=&amp;quot;#e9ecef&amp;quot;, alpha=0.6, position = &amp;#39;identity&amp;#39;) +
scale_fill_manual(values=c(&amp;quot;#69b3a2&amp;quot;, &amp;quot;#404080&amp;quot;)) +
theme_minimal() +
labs(fill=&amp;quot;&amp;quot;)
p&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.&lt;/code>&lt;/pre>
&lt;p>&lt;img src="/sites/cranky-mestorf-a03ae7disciplinas/intror_master/lab42_files/figure-html/unnamed-chunk-1-1.png" width="672" />&lt;/p>
&lt;/div>
&lt;/div>
&lt;div id="transformação-com-dados-numéricos" class="section level2">
&lt;h2>Transformação com dados numéricos&lt;/h2>
&lt;pre class="r">&lt;code># get first observation for each Species in iris data -- base R
mini_iris &amp;lt;- iris[c(1, 51, 101), ]
mini_iris %&amp;gt;% gather(key = &amp;quot;flower_att&amp;quot;, value = &amp;quot;measurement&amp;quot;, -Species)&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Species flower_att measurement
## 1 setosa Sepal.Length 5.1
## 2 versicolor Sepal.Length 7.0
## 3 virginica Sepal.Length 6.3
## 4 setosa Sepal.Width 3.5
## 5 versicolor Sepal.Width 3.2
## 6 virginica Sepal.Width 3.3
## 7 setosa Petal.Length 1.4
## 8 versicolor Petal.Length 4.7
## 9 virginica Petal.Length 6.0
## 10 setosa Petal.Width 0.2
## 11 versicolor Petal.Width 1.4
## 12 virginica Petal.Width 2.5&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="transformando-dados-de-wide-para-long-para-representar-dois-dados-iguais-de-recortes-distintos-no-mesmo-gráfico---dados-categóricos" class="section level2">
&lt;h2>Transformando dados de wide para long para representar dois dados iguais de recortes distintos no mesmo gráfico - dados categóricos&lt;/h2>
&lt;pre class="r">&lt;code>dados_bh &amp;lt;- read_delim(&amp;quot;dados_aluno.csv&amp;quot;,
delim = &amp;quot;;&amp;quot;, escape_double = FALSE, trim_ws = TRUE)&lt;/code>&lt;/pre>
&lt;pre class="r">&lt;code># &amp;quot;Na unha!!!!&amp;quot;
antes &amp;lt;- dados_bh %&amp;gt;%
select(internet_compras_antes, genero, escolaridade) %&amp;gt;%
mutate(dado = &amp;quot;antes&amp;quot;) %&amp;gt;%
rename(&amp;quot;internet&amp;quot; = &amp;quot;internet_compras_antes&amp;quot;)
depois &amp;lt;- dados_bh %&amp;gt;%
select(internet_compras_depois, genero, escolaridade) %&amp;gt;%
mutate(dado = &amp;quot;durante&amp;quot;) %&amp;gt;%
rename(&amp;quot;internet&amp;quot; = &amp;quot;internet_compras_depois&amp;quot;)
data_plot &amp;lt;- data.frame(rbind(antes, depois))
##### Alternativa usando a função gather para gerar o data_plot - &amp;quot;elegante&amp;quot;
data_plot_long &amp;lt;- dados_bh %&amp;gt;%
gather(key = &amp;quot;dado&amp;quot;, value = &amp;quot;antes_depois&amp;quot;, -genero, -escolaridade)&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="gráficos" class="section level2">
&lt;h2>Gráficos&lt;/h2>
&lt;pre class="r">&lt;code>ggplot(data_plot_long) +
geom_bar(aes(x = antes_depois, fill = dado), position = &amp;quot;dodge&amp;quot;) +
coord_flip() +
facet_wrap(~ genero)
ggplot(data_plot_long) +
geom_bar(aes(x = antes_depois, fill = dado), position = &amp;quot;dodge&amp;quot;) +
coord_flip() +
facet_grid(escolaridade ~ genero)&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="extra-função-case_when-dentro-do-mutate" class="section level2">
&lt;h2>Extra: função “case_when” dentro do mutate&lt;/h2>
&lt;pre class="r">&lt;code>data_plot_long &amp;lt;- dados_bh %&amp;gt;%
gather(key = &amp;quot;dado&amp;quot;, value = &amp;quot;antes_depois&amp;quot;, -genero, -escolaridade) %&amp;gt;%
mutate(dado = case_when(dado == &amp;#39;internet_compras_antes&amp;#39; ~ &amp;#39;antes&amp;#39;,
dado == &amp;#39;internet_compras_depois&amp;#39; ~ &amp;#39;depois&amp;#39;))
ggplot(data_plot_long) +
geom_bar(aes(x = antes_depois, fill = dado), position = &amp;quot;dodge&amp;quot;) +
coord_flip() +
facet_wrap(~ genero)&lt;/code>&lt;/pre>
&lt;p>&lt;img src="/sites/cranky-mestorf-a03ae7disciplinas/intror_master/lab42_files/figure-html/unnamed-chunk-6-1.png" width="672" />&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Lab 4.3</title><link>/disciplinas/intror_master/lab43/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab43/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;pre class="r">&lt;code>library(tidyverse)&lt;/code>&lt;/pre>
&lt;pre class="r">&lt;code> #---
# +++ Matrix Basics ----
#
matrix( data= 1:20, nrow= 4)
matrix( data= 1:20, nrow= 5)
matrix( data= 1:20, 4)
matrix( data= 1:20, ncol= 4)
matrix( data= 1:20, , 4)
#---
# OBS IMPORTANTE: ordem DEFAULT de preenchimento: por coluna
#---
mA= matrix( data= 1:20, nrow= 4, byrow= T)
mA
#---
# Transposi��o
#---
t(mA)
#---
# Matrizes de caracteres ...
#---
mChar= matrix( data= month.abb, nrow= 4)
#---
# ... ou de logicos
#---
vTemp= ((1:12)%%4) == 1
mLog= matrix( vTemp, nrow= 4)
mLog
#---
# + direto:
#---
matrix( ((1:12)%%4) == 1, 4)
#---
#
# OBS Elementos de uma matriz sempre têm mesmo tipo.
# Se não for assim são modificados!
# Na marra e na surdina.
#
#---
matrix( c(1:10,T,T), 4)
matrix( c(1:10,&amp;quot;T&amp;quot;,T), 4)
#
# +++ END Basics ----
#---
#---
# +++ BEG Operações elementares I: Matrizes e Escalares ----
#
mA
2*mA
sqrt(mA)
mA^(1/3)
2^mA
mA&amp;gt;5
paste(mA, &amp;quot;1&amp;quot;)
c(mA, &amp;quot;1&amp;quot;)
c(mA, 1)
#
# +++ END Operações elementares I: Matrizes e Escalares ----
#---
#---
# +++ BEG Operações elementares II: Matrizes e Vetores ----
#
mA= t(mA)
mA
#---
mA + 1:20 # Business as usual
#---
#---
mA + 1:10 # 2 {length(mA) / length(1:10) } Ciclos
#---
#---
mA + 1:16 # Numero não inteiro de ciclos
#---
1:20+1:16
matrix( 1:20+1:16, 5 )
#---
# outro exemplo de ciclo
#---
mB= matrix( 1:12, 4 )
(1:3)^mB
#
# +++ END Operações elementares II: Matrizes e Vetores ----
#---
#---
# +++ BEG Operações elementares III: Matrizes e Matrizes ----
#
mB
mA
mA + mB
mA= matrix(1:16, 4)
mC= matrix(1:8, 4)
mA+mC
#---
# Produto matricial
#---
dim(mA)
dim(mB)
mA%*%mB
#---
# Inversa
#---
solve(mA)
set.seed(1)
mD= matrix(runif(16), 4)
solve(mD)
mD %*% solve(mD)
round(mD %*% solve(mD), digits=6)
#
# +++ END Operações elementares III: Matrizes e Matrizes ----
#---
#---
# +++ BEG Submatrizes , etc ----
#
mA
mA[1,3] # elemento [1,3]
mA[2,] # segunda linha
mA[1:2,] # primeira e segunda linhas
mA[,c(1,3)] # primeira e terceira colunas
mA[1:2,c(1,3)] # Uma SubMatriz
#---
# Lembrando subvetores
#---
y= 10*(1:11)
length(y)
y
ehPar= c(F, T, F, T, F, T, F, T, F, T, F)
y[ehPar]
ehPar= ((1:length(y))%%2 == 0)
#---
# Análogo pra formação de submatrizes
#---
mD= round(100*mD, 0)
row(mD)
col(mD)
LinMaiorQCol= row(mD)&amp;gt;col(mD)
mD[LinMaiorQCol]
mD
mD[row(mD)==col(mD)]
#
# +++ END Submatrizes , etc ----
#---
#---
# +++ BEG documentando vetores ----
#
y=1:12
names(y)= month.abb
y
y[c(2,4)]
y[c(&amp;quot;Jan&amp;quot;, &amp;quot;Feb&amp;quot;, &amp;quot;Jul&amp;quot;)]
#
# +++ END documentando vetores ----
#---
#---
# +++ BEG documentando matrizes ----
#---
mA= matrix(1:20, 5)
dimnames(mA)= list(letters[1:5],month.abb[1:4])
mA
summary(matrix(1:20, 5))
summary(mA)
#---
# +++ END documentando matrizes ----
#---
#---
# END matrizes: vetores especiais ----
#---
#---
# BEG listas: uma estrutura mais geral ----
#---
dadosDeGB=
list( nome=&amp;quot;Giordanno Bruno&amp;quot;,
idade= 48,
ehCasado= F,
numerosPreferidos= c(pi, log(10)))
#---
# Obs: Ao contrário de vetores e matrizes,
# NÃO é necessário que todas as componentes
# sejam de mesmo tipo
#---
#---
# recuperando componentes
#---
dadosDeGB[[2]]
dadosDeGB$nome
dadosDeGB[&amp;quot;nome&amp;quot;]
dadosDeGB[c(&amp;quot;nome&amp;quot;,&amp;quot;idade&amp;quot;)]
#---
dadosDeGB[[1:2]] # &amp;lt;=== Isso não dá pra fazer
#---
#---
# incorporando componentes
#---
names(dadosDeGB)
dadosDeGB$anosDeEstudo= 40
names(dadosDeGB)
#
# END listas: uma estrutura mais geral ----
#---&lt;/code>&lt;/pre></description></item><item><title>Lab 5</title><link>/disciplinas/intror_master/lab5/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab5/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="funções-e-programação-de-interações-no-r" class="section level1">
&lt;h1>Funções e programação de interações no R&lt;/h1>
&lt;div id="exercícios" class="section level2">
&lt;h2>Exercícios&lt;/h2>
&lt;div id="diretrizes-gerais" class="section level3">
&lt;h3>&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h3>
&lt;ol style="list-style-type: decimal">
&lt;li>Instale o pacote &lt;code>cepespR&lt;/code>&lt;/li>
&lt;/ol>
&lt;pre class="r">&lt;code>devtools::install_github(&amp;quot;Cepesp-Fgv/cepesp-r&amp;quot;)&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Using github PAT from envvar GITHUB_PAT&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Skipping install of &amp;#39;cepespR&amp;#39; from a github remote, the SHA1 (7253b4af) has not changed since last install.
## Use `force = TRUE` to force installation&lt;/code>&lt;/pre>
&lt;ol start="2" style="list-style-type: decimal">
&lt;li>Baixe o arquivo .Rmd e o .csvb e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/ETeYkh2-WipAmE0p9htIqBcBJ-bArZ06Oce43hAV5507nA?e=DuQfI3">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;ol start="3" style="list-style-type: decimal">
&lt;li>&lt;p>Siga as diretrizes da atividade.&lt;/p>&lt;/li>
&lt;li>&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>&lt;/li>
&lt;li>&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio do email &lt;a href="mailto:renataoliveira@gmail.com" class="email">renataoliveira@gmail.com&lt;/a>&lt;/strong>.&lt;/p>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;/hr>
&lt;/div>
&lt;div id="exercício-1." class="section level3">
&lt;h3>Exercício 1.&lt;/h3>
&lt;p>&lt;strong>Agradecimento: Leo Barone pelo maravilhoso exercício!&lt;/strong>&lt;/p>
&lt;/div>
&lt;/div>
&lt;div id="funções-iteração-e-vetorialização-do-código" class="section level2">
&lt;h2>Funções, iteração e vetorialização do código&lt;/h2>
&lt;p>Neste breve tutorial vamos ver alguns exemplos de como criar funções e utilizar processos iterativos (loops), e sua forma vetorializada (famílias de funções &lt;em>apply&lt;/em> e &lt;em>map&lt;/em>) facilitam a organização do código, reduzem bastante o esforço de programação e tornam o programa mais eficiente.&lt;/p>
&lt;p>Estes exemplos servirão de norte para que você leia, em sala, os capítulos &lt;a href="http://r4ds.had.co.nz/functions.html">19 - Functions&lt;/a>, &lt;a href="http://r4ds.had.co.nz/iteration.html">20 - Iteration&lt;/a>, e o trecho do capítulo &lt;a href="http://r4ds.had.co.nz/vectors.html#lists">18 - Vectors&lt;/a> que trata de listas.&lt;/p>
&lt;/div>
&lt;div id="exemplo-1---substituindo-repetição-de-código-por-loops" class="section level2">
&lt;h2>Exemplo 1 - substituindo repetição de código por loops&lt;/h2>
&lt;p>Imagine que você precisa organizar dados dos candidatos à presidência de diversos anos (2006 a 2014) e vai utilizar a API do CEPESP Data. Utilizando a função &lt;em>candidates&lt;/em> do pacote &lt;em>cepespR&lt;/em> podemos obter os dados:&lt;/p>
&lt;pre class="r">&lt;code>library(cepespR)
candidatos06 &amp;lt;- get_candidates(year = 2006, position = &amp;quot;President&amp;quot;)
candidatos10 &amp;lt;- get_candidates(year = 2010, position = &amp;quot;President&amp;quot;)
candidatos14 &amp;lt;- get_candidates(year = 2014, position = &amp;quot;President&amp;quot;)&lt;/code>&lt;/pre>
&lt;p>e, a seguir, podemos juntar todos em um único data_frame:&lt;/p>
&lt;pre class="r">&lt;code>candidatos &amp;lt;- rbind(candidatos06, candidatos10, candidatos14)&lt;/code>&lt;/pre>
&lt;p>Simples, não? Imagine agora que você quer repetir mesma tarefa não 4, mas centenas de vezes. O código deixaria de ser simples e passaria a ter centenas de linhas.&lt;/p>
&lt;p>Essa centena de linhas seria pura repetição de código. No nosso exemplo, a obtenção dos dados para candidatos à presidência em 2006 e em 2010 são idênticas, exceto por 2 números. Como podemos evitar a repetição de códigos?&lt;/p>
&lt;p>Neste tutorial vamos rever dois tópicos que são fundamentais para tornar o seu código mais enxuto e eficiente: funções e iterações (loops e similares).&lt;/p>
&lt;p>No exemplo acima, um simples &lt;em>for loop&lt;/em> resolveria nosso problema de repetição de código. Veja abaixo e tente entender sozinha(o) o que está acontencendo:&lt;/p>
&lt;pre class="r">&lt;code>library(dplyr)
vetor_anos &amp;lt;- c(2006, 2010, 2014)
candidatos &amp;lt;- data.frame()
for (ano in vetor_anos){
candidatos &amp;lt;- bind_rows(candidatos,
get_candidates(year = ano, position = &amp;quot;President&amp;quot;))
}&lt;/code>&lt;/pre>
&lt;p>Simples, não? Se quiséssemos utilizar mais anos em nossa análise, bastaria mudar o vetor “percorrido” pelo loop que contém o número de anos.&lt;/p>
&lt;p>Vamos supor agora que não queremos juntar todos os anos, apenas contar o número de linhas (que é o número de candidatos) em cada um dos anos e armazenar o resultado em um vetor. Veja como fazemos isso com um &lt;em>for loop&lt;/em>:&lt;/p>
&lt;pre class="r">&lt;code>n_candidatos &amp;lt;- c()
for (ano in vetor_anos){
n_candidatos &amp;lt;- c(n_candidatos, nrow(get_candidates(year = ano, position = &amp;quot;President&amp;quot;)))
}&lt;/code>&lt;/pre>
&lt;p>Igualmente simples. Há outras maneiras de produzir o mesmo resultado em R sem utilizar &lt;em>for loops&lt;/em>. Note que podemos pensar um &lt;em>for loop&lt;/em> como uma função que recebe como argumento um vetor e realiza a mesma tarefa para cada elemento do vetor.&lt;/p>
&lt;/div>
&lt;div id="exemplo-2---combinando-loops-e-funções" class="section level2">
&lt;h2>Exemplo 2 - combinando loops e funções&lt;/h2>
&lt;p>Uma das bases mais estudadas em política comparada e estudos empíricos sobre é a Polity IV, que contém varáveis sobre diversas características de um conjunto grande de países e em vários anos. Quem quiser conhecer mais sobre os dados pode acessar &lt;a href="http://www.systemicpeace.org/inscrdata.html">aqui&lt;/a> ou ler a documentação &lt;a href="http://www.systemicpeace.org/inscr/p4manualv2016.pdf">aqui&lt;/a>.&lt;/p>
&lt;p>A principal variável da base de dados é um indicador de grau de democracia que resulta da combinação de um conjunto variáveis componentes codificadas diretamente a partir da observação dos casos. Vamos ignorar seus significados e apenas observar que essas variáveis componentes recebem valores de 0 a 7, se o caso for uma democracia, ou os códigos -66, -77 e -88 em períodos autoritários ou de transição.&lt;/p>
&lt;p>Comece abrindo os dados que estão no repositório do curso e criando uma cópia, ‘p4’, que será modificada.&lt;/p>
&lt;pre class="r">&lt;code>p4_raw &amp;lt;- read.csv2(&amp;quot;https://raw.githubusercontent.com/leobarone/FLS6397_2018/master/data/p4v2016.csv&amp;quot;)
p4 &amp;lt;- p4_raw&lt;/code>&lt;/pre>
&lt;p>Como as variáveis contêm alguns códigos numéricos cujas distâncias matemáticas não fazem nenhum sentido (-66, -77 e -88), precisamos transformá-los em NA para podermos calcular qualquer estatística descritiva com a variável. Vamos realizar a transformação nas variáveis ‘xconst’, ‘xrreg’, ‘xropen’, ‘xconst’ e aprender um novo operador, &lt;em>%in%&lt;/em>. Todas as variáveis se referem sobre características da competição pelo poder Executivo em um país em um ano:&lt;/p>
&lt;pre class="r">&lt;code>p4$xrcomp[p4$xrcomp %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xrreg[p4$xrreg %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xropen[p4$xropen %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xconst[p4$xconst %in% c(-66, -77, -88)] &amp;lt;- NA&lt;/code>&lt;/pre>
&lt;p>Como vamos repetir a mesma transformação de variáveis diversas vezes, convém escrever uma função para tal transformação. Observe com cuidado o código abaixo:&lt;/p>
&lt;pre class="r">&lt;code>limpa_var &amp;lt;- function(x) {
x[x %in% c(-66, -77, -88)] &amp;lt;- NA
return(x)
}&lt;/code>&lt;/pre>
&lt;p>Vamos refazer o código acima utilizando a função que acabamos de criar (lembre-se criar um novo objeto ‘p4’, pois as variáveis foram transformadas no código anterior):&lt;/p>
&lt;pre class="r">&lt;code>p4 &amp;lt;- p4_raw
p4$xrcomp &amp;lt;- limpa_var(p4$xrcomp)
p4$xrreg &amp;lt;- limpa_var(p4$xrreg)
p4$xropen &amp;lt;- limpa_var(p4$xropen)
p4$xconst &amp;lt;- limpa_var(p4$xconst)&lt;/code>&lt;/pre>
&lt;p>Melhor. Temos linhas mais enxutas. Se estívessemos aplicando transformações mais complexas às variáveis, encurtaríamos bastante o código.&lt;/p>
&lt;p>Ainda assim, temos muitas repetições de linha. O que muda de uma linha à outra é apenas o nome da variável. Como vimos no caso anterior, podemos realizar tarefas repetidas em loop. Vamos, dessa forma, aplicar a função que criamos em loop:&lt;/p>
&lt;pre class="r">&lt;code>p4 &amp;lt;- p4_raw
vetor_var &amp;lt;- c(&amp;#39;xrcomp&amp;#39;, &amp;#39;xrreg&amp;#39;, &amp;#39;xropen&amp;#39;, &amp;#39;xconst&amp;#39;)
for (var in vetor_var){
p4[, var] &amp;lt;- limpa_var(p4[, var])
}&lt;/code>&lt;/pre>
&lt;p>Se estívessemos utilizando todas as variáveis do banco de dados codificadas da mesma maneira (são várias) teríamos uma economia bastante importante de código.&lt;/p>
&lt;p>Obs: uma forma alternativa de selecionar variáveis de um data frame utilizando colchetes é aplicando colchetes duplo (em vez de separar linhas e colunas dentro do colchetes por vírgula). O estilo de código abaixo, encontrado com frequência no livro “R for Data Science”, é equivalente ao que acabamos de ver.&lt;/p>
&lt;pre class="r">&lt;code>for (var in vetor_var){
p4[[var]] &amp;lt;- limpa_var(p4[[var]])
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="exercício" class="section level2">
&lt;h2>Exercício&lt;/h2>
&lt;p>Refere-se os dados de ‘Polity’ baixados anteriormente (&lt;em>p4_raw&lt;/em>).
1. Use um &lt;em>for loop&lt;/em> para identificar o valor máximo na tabela das três variáveis: &lt;em>parcomp&lt;/em> (a competitividade da participação), &lt;em>polcomp&lt;/em> (a competitividade da política) e &lt;em>polity2&lt;/em> (o indicador geral da democracia).&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Lab 5.1</title><link>/disciplinas/intror_master/lab51/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab51/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="funções-e-programação-de-interações-no-r" class="section level1">
&lt;h1>Funções e programação de interações no R&lt;/h1>
&lt;div id="exercícios" class="section level2">
&lt;h2>Exercícios&lt;/h2>
&lt;div id="diretrizes-gerais" class="section level3">
&lt;h3>&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h3>
&lt;ol style="list-style-type: decimal">
&lt;li>Instale o pacote &lt;code>cepespR&lt;/code>&lt;/li>
&lt;/ol>
&lt;pre class="r">&lt;code>devtools::install_github(&amp;quot;Cepesp-Fgv/cepesp-r&amp;quot;)&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Using github PAT from envvar GITHUB_PAT&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Skipping install of &amp;#39;cepespR&amp;#39; from a github remote, the SHA1 (7253b4af) has not changed since last install.
## Use `force = TRUE` to force installation&lt;/code>&lt;/pre>
&lt;ol start="2" style="list-style-type: decimal">
&lt;li>Baixe o arquivo .Rmd e o .csvb e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://cefetmgbr-my.sharepoint.com/:u:/g/personal/renataoliveira_cefetmg_br/ETeYkh2-WipAmE0p9htIqBcBJ-bArZ06Oce43hAV5507nA?e=DuQfI3">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;ol start="3" style="list-style-type: decimal">
&lt;li>&lt;p>Siga as diretrizes da atividade.&lt;/p>&lt;/li>
&lt;li>&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>&lt;/li>
&lt;li>&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio do email &lt;a href="mailto:renataoliveira@gmail.com" class="email">renataoliveira@gmail.com&lt;/a>&lt;/strong>.&lt;/p>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;/hr>
&lt;/div>
&lt;div id="exercício-1." class="section level3">
&lt;h3>Exercício 1.&lt;/h3>
&lt;p>&lt;strong>Agradecimento: Leo Barone pelo maravilhoso exercício!&lt;/strong>&lt;/p>
&lt;/div>
&lt;/div>
&lt;div id="funções-iteração-e-vetorialização-do-código" class="section level2">
&lt;h2>Funções, iteração e vetorialização do código&lt;/h2>
&lt;p>Neste breve tutorial vamos ver alguns exemplos de como criar funções e utilizar processos iterativos (loops), e sua forma vetorializada (famílias de funções &lt;em>apply&lt;/em> e &lt;em>map&lt;/em>) facilitam a organização do código, reduzem bastante o esforço de programação e tornam o programa mais eficiente.&lt;/p>
&lt;p>Estes exemplos servirão de norte para que você leia, em sala, os capítulos &lt;a href="http://r4ds.had.co.nz/functions.html">19 - Functions&lt;/a>, &lt;a href="http://r4ds.had.co.nz/iteration.html">20 - Iteration&lt;/a>, e o trecho do capítulo &lt;a href="http://r4ds.had.co.nz/vectors.html#lists">18 - Vectors&lt;/a> que trata de listas.&lt;/p>
&lt;/div>
&lt;div id="exemplo-1---substituindo-repetição-de-código-por-loops" class="section level2">
&lt;h2>Exemplo 1 - substituindo repetição de código por loops&lt;/h2>
&lt;p>Imagine que você precisa organizar dados dos candidatos à presidência de diversos anos (2006 a 2014) e vai utilizar a API do CEPESP Data. Utilizando a função &lt;em>candidates&lt;/em> do pacote &lt;em>cepespR&lt;/em> podemos obter os dados:&lt;/p>
&lt;pre class="r">&lt;code>library(cepespR)
candidatos06 &amp;lt;- get_candidates(year = 2006, position = &amp;quot;President&amp;quot;)
candidatos10 &amp;lt;- get_candidates(year = 2010, position = &amp;quot;President&amp;quot;)
candidatos14 &amp;lt;- get_candidates(year = 2014, position = &amp;quot;President&amp;quot;)&lt;/code>&lt;/pre>
&lt;p>e, a seguir, podemos juntar todos em um único data_frame:&lt;/p>
&lt;pre class="r">&lt;code>candidatos &amp;lt;- rbind(candidatos06, candidatos10, candidatos14)&lt;/code>&lt;/pre>
&lt;p>Simples, não? Imagine agora que você quer repetir mesma tarefa não 4, mas centenas de vezes. O código deixaria de ser simples e passaria a ter centenas de linhas.&lt;/p>
&lt;p>Essa centena de linhas seria pura repetição de código. No nosso exemplo, a obtenção dos dados para candidatos à presidência em 2006 e em 2010 são idênticas, exceto por 2 números. Como podemos evitar a repetição de códigos?&lt;/p>
&lt;p>Neste tutorial vamos rever dois tópicos que são fundamentais para tornar o seu código mais enxuto e eficiente: funções e iterações (loops e similares).&lt;/p>
&lt;p>No exemplo acima, um simples &lt;em>for loop&lt;/em> resolveria nosso problema de repetição de código. Veja abaixo e tente entender sozinha(o) o que está acontencendo:&lt;/p>
&lt;pre class="r">&lt;code>library(dplyr)
vetor_anos &amp;lt;- c(2006, 2010, 2014)
candidatos &amp;lt;- data.frame()
for (ano in vetor_anos){
candidatos &amp;lt;- bind_rows(candidatos,
get_candidates(year = ano, position = &amp;quot;President&amp;quot;))
}&lt;/code>&lt;/pre>
&lt;p>Simples, não? Se quiséssemos utilizar mais anos em nossa análise, bastaria mudar o vetor “percorrido” pelo loop que contém o número de anos.&lt;/p>
&lt;p>Vamos supor agora que não queremos juntar todos os anos, apenas contar o número de linhas (que é o número de candidatos) em cada um dos anos e armazenar o resultado em um vetor. Veja como fazemos isso com um &lt;em>for loop&lt;/em>:&lt;/p>
&lt;pre class="r">&lt;code>n_candidatos &amp;lt;- c()
for (ano in vetor_anos){
n_candidatos &amp;lt;- c(n_candidatos, nrow(get_candidates(year = ano, position = &amp;quot;President&amp;quot;)))
}&lt;/code>&lt;/pre>
&lt;p>Igualmente simples. Há outras maneiras de produzir o mesmo resultado em R sem utilizar &lt;em>for loops&lt;/em>. Note que podemos pensar um &lt;em>for loop&lt;/em> como uma função que recebe como argumento um vetor e realiza a mesma tarefa para cada elemento do vetor.&lt;/p>
&lt;/div>
&lt;div id="exemplo-2---combinando-loops-e-funções" class="section level2">
&lt;h2>Exemplo 2 - combinando loops e funções&lt;/h2>
&lt;p>Uma das bases mais estudadas em política comparada e estudos empíricos sobre é a Polity IV, que contém varáveis sobre diversas características de um conjunto grande de países e em vários anos. Quem quiser conhecer mais sobre os dados pode acessar &lt;a href="http://www.systemicpeace.org/inscrdata.html">aqui&lt;/a> ou ler a documentação &lt;a href="http://www.systemicpeace.org/inscr/p4manualv2016.pdf">aqui&lt;/a>.&lt;/p>
&lt;p>A principal variável da base de dados é um indicador de grau de democracia que resulta da combinação de um conjunto variáveis componentes codificadas diretamente a partir da observação dos casos. Vamos ignorar seus significados e apenas observar que essas variáveis componentes recebem valores de 0 a 7, se o caso for uma democracia, ou os códigos -66, -77 e -88 em períodos autoritários ou de transição.&lt;/p>
&lt;p>Comece abrindo os dados que estão no repositório do curso e criando uma cópia, ‘p4’, que será modificada.&lt;/p>
&lt;pre class="r">&lt;code>p4_raw &amp;lt;- read.csv2(&amp;quot;https://raw.githubusercontent.com/leobarone/FLS6397_2018/master/data/p4v2016.csv&amp;quot;)
p4 &amp;lt;- p4_raw&lt;/code>&lt;/pre>
&lt;p>Como as variáveis contêm alguns códigos numéricos cujas distâncias matemáticas não fazem nenhum sentido (-66, -77 e -88), precisamos transformá-los em NA para podermos calcular qualquer estatística descritiva com a variável. Vamos realizar a transformação nas variáveis ‘xconst’, ‘xrreg’, ‘xropen’, ‘xconst’ e aprender um novo operador, &lt;em>%in%&lt;/em>. Todas as variáveis se referem sobre características da competição pelo poder Executivo em um país em um ano:&lt;/p>
&lt;pre class="r">&lt;code>p4$xrcomp[p4$xrcomp %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xrreg[p4$xrreg %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xropen[p4$xropen %in% c(-66, -77, -88)] &amp;lt;- NA
p4$xconst[p4$xconst %in% c(-66, -77, -88)] &amp;lt;- NA&lt;/code>&lt;/pre>
&lt;p>Como vamos repetir a mesma transformação de variáveis diversas vezes, convém escrever uma função para tal transformação. Observe com cuidado o código abaixo:&lt;/p>
&lt;pre class="r">&lt;code>limpa_var &amp;lt;- function(x) {
x[x %in% c(-66, -77, -88)] &amp;lt;- NA
return(x)
}&lt;/code>&lt;/pre>
&lt;p>Vamos refazer o código acima utilizando a função que acabamos de criar (lembre-se criar um novo objeto ‘p4’, pois as variáveis foram transformadas no código anterior):&lt;/p>
&lt;pre class="r">&lt;code>p4 &amp;lt;- p4_raw
p4$xrcomp &amp;lt;- limpa_var(p4$xrcomp)
p4$xrreg &amp;lt;- limpa_var(p4$xrreg)
p4$xropen &amp;lt;- limpa_var(p4$xropen)
p4$xconst &amp;lt;- limpa_var(p4$xconst)&lt;/code>&lt;/pre>
&lt;p>Melhor. Temos linhas mais enxutas. Se estívessemos aplicando transformações mais complexas às variáveis, encurtaríamos bastante o código.&lt;/p>
&lt;p>Ainda assim, temos muitas repetições de linha. O que muda de uma linha à outra é apenas o nome da variável. Como vimos no caso anterior, podemos realizar tarefas repetidas em loop. Vamos, dessa forma, aplicar a função que criamos em loop:&lt;/p>
&lt;pre class="r">&lt;code>p4 &amp;lt;- p4_raw
vetor_var &amp;lt;- c(&amp;#39;xrcomp&amp;#39;, &amp;#39;xrreg&amp;#39;, &amp;#39;xropen&amp;#39;, &amp;#39;xconst&amp;#39;)
for (var in vetor_var){
p4[, var] &amp;lt;- limpa_var(p4[, var])
}&lt;/code>&lt;/pre>
&lt;p>Se estívessemos utilizando todas as variáveis do banco de dados codificadas da mesma maneira (são várias) teríamos uma economia bastante importante de código.&lt;/p>
&lt;p>Obs: uma forma alternativa de selecionar variáveis de um data frame utilizando colchetes é aplicando colchetes duplo (em vez de separar linhas e colunas dentro do colchetes por vírgula). O estilo de código abaixo, encontrado com frequência no livro “R for Data Science”, é equivalente ao que acabamos de ver.&lt;/p>
&lt;pre class="r">&lt;code>for (var in vetor_var){
p4[[var]] &amp;lt;- limpa_var(p4[[var]])
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;div id="exercício" class="section level2">
&lt;h2>Exercício&lt;/h2>
&lt;p>Refere-se os dados de ‘Polity’ baixados anteriormente (&lt;em>p4_raw&lt;/em>).
1. Use um &lt;em>for loop&lt;/em> para identificar o valor máximo na tabela das três variáveis: &lt;em>parcomp&lt;/em> (a competitividade da participação), &lt;em>polcomp&lt;/em> (a competitividade da política) e &lt;em>polity2&lt;/em> (o indicador geral da democracia).&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Lab 5.2</title><link>/disciplinas/intror_master/lab52/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/lab52/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;div id="TOC">
&lt;/div>
&lt;div id="scrape-em-tabelas" class="section level1">
&lt;h1>Scrape em tabelas&lt;/h1>
&lt;div id="exercícios" class="section level2">
&lt;h2>Exercícios&lt;/h2>
&lt;div id="diretrizes-gerais" class="section level3">
&lt;h3>&lt;strong>Diretrizes gerais:&lt;/strong>&lt;/h3>
&lt;ol style="list-style-type: decimal">
&lt;li>Instale o pacote &lt;code>tabulizer&lt;/code>&lt;/li>
&lt;/ol>
&lt;pre class="r">&lt;code>devtools::install_github(c(&amp;quot;ropensci/tabulizerjars&amp;quot;, &amp;quot;ropensci/tabulizer&amp;quot;))&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Using github PAT from envvar GITHUB_PAT&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Skipping install of &amp;#39;tabulizerjars&amp;#39; from a github remote, the SHA1 (d1924e01) has not changed since last install.
## Use `force = TRUE` to force installation&lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Downloading GitHub repo ropensci/tabulizer@HEAD&lt;/code>&lt;/pre>
&lt;pre>&lt;code>##
##
checking for file &amp;#39;C:\Users\user\AppData\Local\Temp\RtmpygmzgX\remotesf3f45826743b\ropensci-tabulizer-3049a79/DESCRIPTION&amp;#39; ...
v checking for file &amp;#39;C:\Users\user\AppData\Local\Temp\RtmpygmzgX\remotesf3f45826743b\ropensci-tabulizer-3049a79/DESCRIPTION&amp;#39; (565ms)
##
- preparing &amp;#39;tabulizer&amp;#39;:
## checking DESCRIPTION meta-information ...
checking DESCRIPTION meta-information ...
v checking DESCRIPTION meta-information
##
- checking for LF line-endings in source and make files and shell scripts
##
- checking for empty or unneeded directories
##
Removed empty directory
Removed empty directory &amp;#39;tabulizer/docs&amp;#39;
##
- building &amp;#39;tabulizer_0.2.2.tar.gz&amp;#39;
##
## &lt;/code>&lt;/pre>
&lt;pre>&lt;code>## Installing package into &amp;#39;C:/Users/user/Documents/R/win-library/4.1&amp;#39;
## (as &amp;#39;lib&amp;#39; is unspecified)&lt;/code>&lt;/pre>
&lt;ol start="2" style="list-style-type: decimal">
&lt;li>Baixe o arquivo .Rmd e o folder com os arquivos em .pdf e abra no RStudio.&lt;/li>
&lt;/ol>
&lt;p>&lt;a href="https://www.dropbox.com/s/3eryvmh6fx7hszg/tabulizer.Rmd?dl=0">Arquivo .Rmd&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.dropbox.com/sh/06oe1s96w2d4qhp/AABretq0u92RGeuPmekbbWXva?dl=0">Arquivos .pdf&lt;/a>&lt;/p>
&lt;ol start="3" style="list-style-type: decimal">
&lt;li>&lt;p>Siga as diretrizes da atividade.&lt;/p>&lt;/li>
&lt;li>&lt;p>Rode o arquivo .Rmd por meio do ícone &lt;code>knitr&lt;/code>&lt;/p>&lt;/li>
&lt;li>&lt;p>Salve o .Rmd e &lt;strong>submeta-o por meio do email &lt;a href="mailto:renataoliveira@gmail.com" class="email">renataoliveira@gmail.com&lt;/a>&lt;/strong>.&lt;/p>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;/hr>
&lt;pre class="r">&lt;code>library(hrbrthemes)
library(ggplot2)
library(Cairo)
library(extrafont)
library(rJava) # Needed for tabulizer
library(tabulizer) # Handy tool for PDF Scraping
library(tidyverse) # Core data manipulation and visualization libraries
library(janitor)
extrafont::loadfonts()&lt;/code>&lt;/pre>
&lt;p>Este chunk serve para fazer a leitura dos arquivos&lt;/p>
&lt;pre class="r">&lt;code># PDF Scrape Tables
#Store folder of pdf to be loaded
folder &amp;lt;- &amp;quot;pdf/&amp;quot;
# Number of files in folder
num_files &amp;lt;- length(dir(folder, pattern=&amp;quot;*.pdf&amp;quot;))
# Generate file list of shapefiles
files &amp;lt;- as.data.frame(dir(folder, pattern=&amp;quot;*.pdf&amp;quot;))
names(files) &amp;lt;- &amp;quot;data&amp;quot;
## Generate static maps
tmp &amp;lt;- data.frame(bairro = NA , sg = NA, srag = NA, obitos = NA, data = NA)
for (i in 1:num_files) {
file_name &amp;lt;- files[i,1]
data &amp;lt;- print(str_sub(files[i,1], -14, -7))
scrape &amp;lt;- tabulizer::extract_tables(file = paste0(&amp;quot;pdf/&amp;quot;, files[i,1]), output = &amp;quot;data.frame&amp;quot;, page = 2, guess = TRUE, method = &amp;quot;stream&amp;quot;)
scrape1 &amp;lt;- as.data.frame(scrape[[1]])
scrape1 &amp;lt;- scrape1 %&amp;gt;%
separate(col = &amp;#39;Síndrome.Respiratória.Aguda.Grave&amp;#39;, into = c(&amp;quot;total de casos&amp;quot;, &amp;quot;óbitos&amp;quot;), sep = &amp;#39; &amp;#39;) %&amp;gt;%
slice(-1)
scrape1 &amp;lt;- scrape1[,c(1,3,5,6)]
names(scrape1) &amp;lt;- c(&amp;quot;bairro&amp;quot;, &amp;quot;sg&amp;quot;, &amp;quot;srag&amp;quot;, &amp;quot;obitos&amp;quot;)
if (length(scrape) != 1) {
scrape2 &amp;lt;- as.data.frame(scrape[[2]])
scrape2[5,] &amp;lt;- colnames(scrape2)
names(scrape2) &amp;lt;- c(&amp;quot;bairro&amp;quot;, &amp;quot;sg&amp;quot;, &amp;quot;srag&amp;quot;, &amp;quot;obitos&amp;quot;)
scrape2 &amp;lt;- scrape2 %&amp;gt;%
filter(bairro != &amp;quot;TOTAL&amp;quot;)
scrape2 &amp;lt;- scrape2 %&amp;gt;%
mutate(bairro = str_replace_all(bairro, &amp;quot;\\.&amp;quot;, &amp;quot; &amp;quot;), sg = str_replace(sg, &amp;quot;X&amp;quot;, &amp;quot;&amp;quot;), srag = str_replace(srag, &amp;quot;X&amp;quot;, &amp;quot;&amp;quot;), obitos = str_replace(obitos, &amp;quot;X&amp;quot;, &amp;quot;&amp;quot;))
tmp_dia &amp;lt;- rbind(scrape1, scrape2)
tmp_dia[,5] &amp;lt;- data
names(tmp_dia) &amp;lt;- c(&amp;quot;bairro&amp;quot;, &amp;quot;sg&amp;quot;, &amp;quot;srag&amp;quot;, &amp;quot;obitos&amp;quot;, &amp;quot;data&amp;quot;)
} else {
tmp_dia &amp;lt;- scrape1
tmp_dia[,5] &amp;lt;- data
names(tmp_dia) &amp;lt;- c(&amp;quot;bairro&amp;quot;, &amp;quot;sg&amp;quot;, &amp;quot;srag&amp;quot;, &amp;quot;obitos&amp;quot;, &amp;quot;data&amp;quot;)
}
tmp &amp;lt;- tmp %&amp;gt;%
bind_rows(tmp, tmp_dia) %&amp;gt;%
filter(!is.na(sg))
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;/div></description></item><item><title>Encontro Síncrono 1</title><link>/disciplinas/intror_master/sinc1/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/sinc1/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;link rel="stylesheet" href="/assets/css/custom.css" type="text/css" />
&lt;iframe src="https://intror2021.github.io/class01/" width="672" height="500px" data-external="1">
&lt;/iframe>
&lt;p>&lt;a href="https://intror2021.github.io/class01/">LINK&lt;/a>&lt;/p></description></item><item><title>Encontro Síncrono 2</title><link>/disciplinas/intror_master/sinc2/</link><pubDate>Fri, 15 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/sinc2/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;link rel="stylesheet" href="/assets/css/custom.css" type="text/css" />
&lt;iframe src="https://intror2021.github.io/class02/" width="672" height="500px" data-external="1">
&lt;/iframe>
&lt;p>&lt;a href="https://intror2021.github.io/class02/">LINK&lt;/a>&lt;/p></description></item><item><title>Encontro Síncrono 3</title><link>/disciplinas/intror_master/sinc3/</link><pubDate>Mon, 25 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/sinc3/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;link rel="stylesheet" href="/assets/css/custom.css" type="text/css" />
&lt;iframe src="https://intror2021.github.io/class03/" width="672" height="500px" data-external="1">
&lt;/iframe>
&lt;p>&lt;a href="https://intror2021.github.io/class03/">LINK&lt;/a>&lt;/p></description></item><item><title>Encontro Síncrono 4</title><link>/disciplinas/intror_master/sinc4/</link><pubDate>Mon, 25 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/sinc4/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;link rel="stylesheet" href="/assets/css/custom.css" type="text/css" />
&lt;iframe src="https://intror2021.github.io/class04/" width="672" height="500px" data-external="1">
&lt;/iframe>
&lt;p>&lt;a href="https://intror2021.github.io/class04/">LINK&lt;/a>&lt;/p></description></item><item><title>Encontro Síncrono 5</title><link>/disciplinas/intror_master/sinc5/</link><pubDate>Mon, 25 Oct 2021 00:00:00 +0100</pubDate><guid>/disciplinas/intror_master/sinc5/</guid><description>
&lt;script src="/sites/cranky-mestorf-a03ae7rmarkdown-libs/header-attrs/header-attrs.js">&lt;/script>
&lt;link rel="stylesheet" href="/assets/css/custom.css" type="text/css" />
&lt;iframe src="https://intror2021.github.io/class05/" width="672" height="500px" data-external="1">
&lt;/iframe>
&lt;p>&lt;a href="https://intror2021.github.io/class05/">LINK&lt;/a>&lt;/p></description></item></channel></rss>