<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>data wrangling | Allan Alvarenga</title>
    <link>https://fervent-edison-59866d.netlify.com//categories/data-wrangling/</link>
      <atom:link href="https://fervent-edison-59866d.netlify.com//categories/data-wrangling/index.xml" rel="self" type="application/rss+xml" />
    <description>data wrangling</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>Allan M.S.B. de Alvarenga © 2020.</copyright><lastBuildDate>Tue, 17 Mar 2020 00:00:00 +0000</lastBuildDate>
    <image>
      <url>img/map[gravatar:%!s(bool=false) shape:circle]</url>
      <title>data wrangling</title>
      <link>https://fervent-edison-59866d.netlify.com//categories/data-wrangling/</link>
    </image>
    
    <item>
      <title>Manipulação de dados com dplyr</title>
      <link>https://fervent-edison-59866d.netlify.com//post/dplyr/</link>
      <pubDate>Tue, 17 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://fervent-edison-59866d.netlify.com//post/dplyr/</guid>
      <description>


&lt;div id=&#34;instalando-e-carregando-o-pacote-dplyr&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Instalando e carregando o pacote dplyr&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Instala o pacote.
# install.packages(&amp;quot;dplyr&amp;quot;)

# Carrega o pacote
library(dplyr)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos usar a base de dados &lt;code&gt;&#34;murders&#34;&lt;/code&gt; do pacote &lt;code&gt;dslabs&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(dslabs)
data(&amp;quot;murders&amp;quot;) &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos verificar o conteúdo do data frame:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;head(murders) &lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##        state abb region population total
## 1    Alabama  AL  South    4779736   135
## 2     Alaska  AK   West     710231    19
## 3    Arizona  AZ   West    6392017   232
## 4   Arkansas  AR  South    2915918    93
## 5 California  CA   West   37253956  1257
## 6   Colorado  CO   West    5029196    65&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;div class=&#34;alert alert-note&#34;&gt;
  &lt;div&gt;
    A função &lt;code&gt;head()&lt;/code&gt; retorna o início de um vetor, matriz, tabela, data frame ou função.
  &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;mutate-alterar-ou-adicionar-colunas&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;&lt;strong&gt;mutate&lt;/strong&gt; | Alterar ou adicionar colunas&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;murders &amp;lt;- mutate(murders, rate = total / population * 100000)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;font-family: times, serif; font-size:11pt; font-style:italic; color: grey&#34;&gt;
O data frame &lt;code&gt;&#34;murders&#34;&lt;/code&gt; recebe uma nova coluna chamada &lt;code&gt;&#34;rate&#34;&lt;/code&gt; que recebe o total de homicídios dividido pela população e multiplicado por 100,0000.
&lt;/p&gt;
&lt;p&gt;Veja que a nova coluna &lt;code&gt;rate&lt;/code&gt; foi adicionada:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;head(murders) &lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##        state abb region population total     rate
## 1    Alabama  AL  South    4779736   135 2.824424
## 2     Alaska  AK   West     710231    19 2.675186
## 3    Arizona  AZ   West    6392017   232 3.629527
## 4   Arkansas  AR  South    2915918    93 3.189390
## 5 California  CA   West   37253956  1257 3.374138
## 6   Colorado  CO   West    5029196    65 1.292453&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;select-seleciona-as-colunas-variáveis&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;&lt;strong&gt;select&lt;/strong&gt; | Seleciona as colunas (variáveis)&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;new_table &amp;lt;- select(murders, state, region, rate)
head(new_table)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##        state region     rate
## 1    Alabama  South 2.824424
## 2     Alaska   West 2.675186
## 3    Arizona   West 3.629527
## 4   Arkansas  South 3.189390
## 5 California   West 3.374138
## 6   Colorado   West 1.292453&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;font-family: times, serif; font-size:11pt; font-style:italic; color: grey&#34;&gt;
Somente as variáveis &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;region&lt;/code&gt; e &lt;code&gt;rate&lt;/code&gt; do data frame &lt;code&gt;murders&lt;/code&gt; foram selecionadas para compor o novo data frame chamado &lt;code&gt;new_table&lt;/code&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;filter-filtra-as-linhas-observações&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;&lt;strong&gt;filter&lt;/strong&gt; | Filtra as linhas (observações)&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;new_table_2 &amp;lt;-filter(new_table, rate &amp;lt;= 0.71)
head(new_table_2)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##           state        region      rate
## 1        Hawaii          West 0.5145920
## 2          Iowa North Central 0.6893484
## 3 New Hampshire     Northeast 0.3798036
## 4  North Dakota North Central 0.5947151
## 5       Vermont     Northeast 0.3196211&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;font-family: times, serif; font-size:11pt; font-style:italic; color: grey&#34;&gt;
Selecionamos somente as observações com taxas (&lt;code&gt;rate&lt;/code&gt;) menores ou iguais a 0.71.
&lt;/p&gt;
&lt;p&gt;Nós podemos remover linhas usando o operador &lt;code&gt;!=&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;no_florida &amp;lt;- filter(murders, state != &amp;quot;Florida&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;font-family: times, serif; font-size:11pt; font-style:italic; color: grey&#34;&gt;
&lt;code&gt;!=&lt;/code&gt; seleciona todas as linhas com &lt;strong&gt;exceção&lt;/strong&gt; daquelas com o nome &lt;code&gt;Florida&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;Nós podemos também usar &lt;code&gt;%in%&lt;/code&gt; para filtrar com dplyr. Por exemplo, você pode ver os dados de Nova York e texas assim:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;NY_TX &amp;lt;- filter(murders, state %in% c(&amp;quot;New York&amp;quot;, &amp;quot;Texas&amp;quot;))
head(NY_TX)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##      state abb    region population total    rate
## 1 New York  NY Northeast   19378102   517 2.66796
## 2    Texas  TX     South   25145561   805 3.20136&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;filtrando-com-duas-condicionais&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Filtrando com duas condicionais&lt;/h2&gt;
&lt;p&gt;Suponha que você queira saber quais são os estados da região Nordeste (&lt;code&gt;Northeast&lt;/code&gt;) que possuem uma população com mais de 500 mil pessoas. Note que você pode usar os operadores lógicos com a função &lt;code&gt;filter&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;NE &amp;lt;- filter(murders, population &amp;gt; 5000000 &amp;amp; region == &amp;quot;Northeast&amp;quot;)
head(NE)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##           state abb    region population total     rate
## 1 Massachusetts  MA Northeast    6547629   118 1.802179
## 2    New Jersey  NJ Northeast    8791894   246 2.798032
## 3      New York  NY Northeast   19378102   517 2.667960
## 4  Pennsylvania  PA Northeast   12702379   457 3.597751&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;exercícios&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Exercícios&lt;/h1&gt;
&lt;div id=&#34;instruções&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Instruções&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Note que para ranquear do maior para o menor valor você deve adicionar o sinal negativo.
x &amp;lt;- c(88, 100, 83, 92, 94)
rank(-x)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 4 1 5 3 2&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Definindo a taxa de assassinatos:
rate &amp;lt;-  murders$total/ murders$population * 100000
rank(-rate)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Add a coluna com a taxa de assassinatos
murders &amp;lt;- mutate(murders, rate = total/population * 100000, rank = rank(-rate))&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
1 - Redefina os dados de &lt;code&gt;murders&lt;/code&gt; para incluir a coluna chamada &lt;code&gt;rank&lt;/code&gt; com as taxas de assassinatos do maior para o menor valor.
&lt;/p&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
2 - Use &lt;code&gt;select&lt;/code&gt; para mostrar somente os nomes e abreviações dos estados de &lt;code&gt;murders&lt;/code&gt;. Defina um novo objeto chamado &lt;code&gt;state_abb&lt;/code&gt;.
&lt;/p&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
3 - Crie um novo data frame chamado &lt;code&gt;murders_nw&lt;/code&gt; somente com os estados do nordeste e oeste &lt;code&gt;northeast&lt;/code&gt; e &lt;code&gt;west&lt;/code&gt;, respectivamente. Quantos estados existem nessas regiões (linhas)?
&lt;/p&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
4 - Filtre os dados para que apresentem os 5 estados com maiores taxas de assassinatos. Não se esqueça de adicionar a coluna &lt;code&gt;rate&lt;/code&gt;.
&lt;/p&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
5 - Crie um novo data frame chamado &lt;code&gt;no_south&lt;/code&gt; que remove os estados da região Sul. Quantos estados estão nessa categoria? Nós podemos usar a função &lt;code&gt;nrow()&lt;/code&gt; pra isso.
&lt;/p&gt;
&lt;p style=&#34;font-family: times, serif; font-size:12pt; font-style:italic; color: blue&#34;&gt;
6 - Suponha que você queira viver no Nordeste ou Oeste e quer que a taxa de assassinatos seja menor que 1. Crie um novo data frame chamado &lt;code&gt;my_states&lt;/code&gt; com os dados dos estados que satisfaçam essas opções. Use &lt;code&gt;select&lt;/code&gt; para mostrar somente os nomes dos estados (&lt;code&gt;state&lt;/code&gt;), a taxa de assassinatos (&lt;code&gt;rate&lt;/code&gt;)e o &lt;code&gt;rank&lt;/code&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;respostas&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Respostas&lt;/h2&gt;
&lt;p&gt;1 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;murders &amp;lt;- mutate(murders, rank = rank(-rate))

# ou com pipe:
murders &amp;lt;-
  murders %&amp;gt;%
  mutate(rank = rank(-rate))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;state_abb &amp;lt;- select(murders, state, abb)

# ou com pipe:
state_abb &amp;lt;-
murders %&amp;gt;%
select(state, abb) 

head(state_abb)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##        state abb
## 1    Alabama  AL
## 2     Alaska  AK
## 3    Arizona  AZ
## 4   Arkansas  AR
## 5 California  CA
## 6   Colorado  CO&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;murders_nw &amp;lt;- filter(murders, region %in% c(&amp;quot;Northeast&amp;quot;, &amp;quot;West&amp;quot;))

nrow(murders_nw)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 22&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;filter(murders, rank&amp;lt;=5)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##                  state abb        region population total      rate rank
## 1 District of Columbia  DC         South     601723    99 16.452753    1
## 2            Louisiana  LA         South    4533372   351  7.742581    2
## 3             Maryland  MD         South    5773552   293  5.074866    4
## 4             Missouri  MO North Central    5988927   321  5.359892    3
## 5       South Carolina  SC         South    4625364   207  4.475323    5&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# ou com pipe:
murders %&amp;gt;%
  filter(rank &amp;lt;= 5)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##                  state abb        region population total      rate rank
## 1 District of Columbia  DC         South     601723    99 16.452753    1
## 2            Louisiana  LA         South    4533372   351  7.742581    2
## 3             Maryland  MD         South    5773552   293  5.074866    4
## 4             Missouri  MO North Central    5988927   321  5.359892    3
## 5       South Carolina  SC         South    4625364   207  4.475323    5&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Use filter para criar o data frame &amp;quot;no_south&amp;quot;.
no_south&amp;lt;-filter(murders,region != &amp;quot;South&amp;quot;)
# Use nrow() para calcular o número de linhas (observações).
nrow(no_south)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 34&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;6 -&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# adiciona a coluna de taxas de homicídios.
murders &amp;lt;- mutate(murders, rate =  total / population * 100000, rank = rank(-rate))

# cria os dados chamados `my_states`, que satizfaz as duas condições.
my_states &amp;lt;- filter(murders, region %in% c(&amp;quot;Northeast&amp;quot;, &amp;quot;West&amp;quot;) &amp;amp; rate &amp;lt; 1)

# Use select para mostrar apenas o nome do estado, a taxa de assassinatos e o rank.
select(my_states, state, rate, rank)&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;##           state      rate rank
## 1        Hawaii 0.5145920   49
## 2         Idaho 0.7655102   46
## 3         Maine 0.8280881   44
## 4 New Hampshire 0.3798036   50
## 5        Oregon 0.9396843   42
## 6          Utah 0.7959810   45
## 7       Vermont 0.3196211   51
## 8       Wyoming 0.8871131   43&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# ou com pipe:
my_states &amp;lt;-
murders %&amp;gt;%
  mutate(rate = total / population * 100000, rank = rank(-rate))%&amp;gt;%
  filter(region %in% c(&amp;quot;Northeast&amp;quot;, &amp;quot;West&amp;quot;) &amp;amp; rate &amp;lt; 1)%&amp;gt;%
  select(state, rate, rank)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;resumo&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Resumo&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para adicionar ou modificar um coluna na tabela de dados nós usamos a função mutate().&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para filtrar os dados, criando subconjuntos pelos valores das linhas utilizamos a função filter().&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para criar subconjuntos de dados selecionando colunas específicas, nós utilizamos a função select().&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;div class=&#34;alert alert-note&#34;&gt;
  &lt;div&gt;
    &lt;/p&gt;
&lt;div id=&#34;atalhos&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Atalhos&lt;/h3&gt;
&lt;p&gt;No &lt;strong&gt;Rstudio:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;crtl + alt + i&lt;/strong&gt; Cria um novo chunk &lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; no Rmarkdown&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;crtl + shift + a&lt;/strong&gt; Reindenta o código&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;crtl + shift + c&lt;/strong&gt; # Comenta a linha do código&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;crtl + shift + m&lt;/strong&gt; cria o pipe &lt;code&gt;%&amp;gt;%&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;alt -&lt;/strong&gt; cria o símbolo &lt;code&gt;&amp;lt;-&lt;/code&gt; no chunk ou &lt;code&gt;=&lt;/code&gt; fora do chunk&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Esse tutorial é baseado (modificado/traduzido) no livro do professor Rafael A. Irizarry “&lt;strong&gt;Introduction to Data Science&lt;/strong&gt;” que pode ser obtido de forma gratuita &lt;a href=&#34;https://leanpub.com/datasciencebook&#34;&gt;aqui&lt;/a&gt;.
O livro é utilizado no curso &lt;a href=&#34;https://courses.edx.org/courses/course-v1:HarvardX+PH125.1x+1T2020/course/&#34;&gt;Data Science: R Basics&lt;/a&gt; da plataforma edx oferecido pela universidade de Harvard.
Esse tutorial está sob licença &lt;em&gt;Creative Commons Attribution-ShareAlike 4.0 Licença internacional.&lt;/em&gt;
&lt;img src=&#34;creative.png&#34; alt=&#34;creative&#34; /&gt; Para ver uma cópia dessa licença acesse &lt;a href=&#34;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.pt_BR&#34;&gt;aqui&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;Trecho de código&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
