Skip to content

Commit

Permalink
pipes
Browse files Browse the repository at this point in the history
  • Loading branch information
temospena committed Feb 10, 2020
1 parent 380d58c commit 88b72b6
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 17 deletions.
Binary file modified .RData
Binary file not shown.
33 changes: 29 additions & 4 deletions COMPILACAO.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ library(stargazer) #contínuas
library(summarytools) #contínuas e categóricas
library(fastDummies) #criar variáveis dummy a partir de categóricas
```
```{rlibrary downgrade, eval=F}
#instalar uma versão específica de um package - útil para donwgrade
```{r library downgrade, eval=F}
#instalar uma versão específica de um package - útil para donwgrade
require(devtools)
install_version("stplanr", version = "0.3.1", repos = "http://cran.us.r-project.org")
```
Expand Down Expand Up @@ -338,12 +338,18 @@ TABELA<-TABELA[is.na(TABELA$Modo0), -c(2,3,8:15)] #remover várias colunas segun
#Extrair uma parte da tabela
SubClustNC <-subset(SubNC, select=c(240,241))
#ver também filtros abaixo...
#reordenar tabela por variável
#reordenar linhas, por variável
TABELA <- TABELA[order(TABELA$ID_viagem),]
TABELA <- TABELA[order(TABELA$Zona, TABELA$ID_viagem),] #por mais de uma variável
TABELA <- TABELA[order(TABELA$Zona, -TABELA$ID_viagem),] #por mais de uma variável, com ordem decrescente na segunda
#reodenar linhas, usando dyplr
TABELA <- arrange(TABELA, var1) #ascendente
TABELA <- arrange(TABELA, desc(var1)) #descendente, por 1 variável
TABELA <- arrange(TABELA, desc(var1, var2)) #por mais que 1 variável
#adicionar um ID a cada linha, em ordem sequencial
TABELA$ID<-seq.int(nrow(TABELA))
Expand Down Expand Up @@ -437,6 +443,17 @@ Horas2016<-as.data.frame(seq.POSIXt(ISOdate(2016,1,1,0), ISOdate(2016,12,31,23),
```
>__Dica:__ explorar o [_lubridate_](https://github.com/rstudio/cheatsheets/raw/master/lubridate.pdf)
##Pipes e filtros
Outra maneira de pegar apenas numa parte da tabela, é usando filtros (uma função do [dyplr](https://dplyr.tidyverse.org/))
```{r pipes, eval=F}
filter(TABELA, var1=="Autocarro")
filter(TABELA, var1!=var2) #selecciona os casos em que a var1 é diferente da var2
TABELA %>% filter(var1!=var2) #usando pipes, omite-se o primeiro argumento
```
Pode-se usar infinitos pipes, e escrever só numa linha o código, evitando também criar dataframes intermédios.

> cuidado com o summarise_at, pensar qual o o número do campo da tabela virtual criada.
##Group by, summarize e melt
Calcula as médias e freq, de uma variável
```{r group_by summarize, eval=F}
Expand All @@ -455,7 +472,15 @@ ODsViagens<-group_by(VIAGENSredux, Tipo, ID0, ID1)
ODsViagens<-summarise(ODsViagens,sum(DistanciaM), n())
```
###Melt - dissolve as colunas em várias linhas repetidas
###Group by e summarize com pipes
```{r group_by pipes, eval=F}
VIAGENSamlGAMA <- VIAGENSaml %>% group_by(inter, gama) %>% summarise(viagens = sum(PESOFIN), count=n())
VIAGENSamlGAMAlisboa <- VIAGENSaml %>% filter(DTCC_or=="1106" | DTCC_de=="1106" ) %>% group_by(inter, gama) %>% summarise(viagens = sum(PESOFIN)) #filtrando apenas algumas
```

###Melt
Dissolve as colunas em várias linhas repetidas
```{r melt, eval=F}
MCBARRIERSERAmelt <- melt(MCBARRIERSERA, id.vars=c("names","MCBARRIERSERA.MEAN", "MCBARRIERSERA.FREQ"))
```
Expand Down
41 changes: 32 additions & 9 deletions COMPILACAO.html
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ <h2><span class="header-section-number">1.1</span> Importar packages</h2>
library(stargazer) #contínuas
library(summarytools) #contínuas e categóricas
library(fastDummies) #criar variáveis dummy a partir de categóricas</code></pre>
<pre class="rlibrary"><code>#instalar uma versão específica de um package - útil para donwgrade
<pre class="r"><code>#instalar uma versão específica de um package - útil para donwgrade
require(devtools)
install_version(&quot;stplanr&quot;, version = &quot;0.3.1&quot;, repos = &quot;http://cran.us.r-project.org&quot;)</code></pre>
</div>
Expand Down Expand Up @@ -501,12 +501,18 @@ <h2><span class="header-section-number">1.6</span> Ler e alterar colunas</h2>

#Extrair uma parte da tabela
SubClustNC &lt;-subset(SubNC, select=c(240,241))
#ver também filtros abaixo...

#reordenar tabela por variável
#reordenar linhas, por variável
TABELA &lt;- TABELA[order(TABELA$ID_viagem),]
TABELA &lt;- TABELA[order(TABELA$Zona, TABELA$ID_viagem),] #por mais de uma variável
TABELA &lt;- TABELA[order(TABELA$Zona, -TABELA$ID_viagem),] #por mais de uma variável, com ordem decrescente na segunda

#reodenar linhas, usando dyplr
TABELA &lt;- arrange(TABELA, var1) #ascendente
TABELA &lt;- arrange(TABELA, desc(var1)) #descendente, por 1 variável
TABELA &lt;- arrange(TABELA, desc(var1, var2)) #por mais que 1 variável

#adicionar um ID a cada linha, em ordem sequencial
TABELA$ID&lt;-seq.int(nrow(TABELA))

Expand Down Expand Up @@ -596,8 +602,19 @@ <h3><span class="header-section-number">1.6.3</span> Criar tabela com data seque
</blockquote>
</div>
</div>
<div id="pipes-e-filtros" class="section level2">
<h2><span class="header-section-number">1.7</span> Pipes e filtros</h2>
<p>Outra maneira de pegar apenas numa parte da tabela, é usando filtros (uma função do <a href="https://dplyr.tidyverse.org/">dyplr</a>)</p>
<pre class="r"><code>filter(TABELA, var1==&quot;Autocarro&quot;)
filter(TABELA, var1!=var2) #selecciona os casos em que a var1 é diferente da var2
TABELA %&gt;% filter(var1!=var2) #usando pipes, omite-se o primeiro argumento</code></pre>
<p>Pode-se usar infinitos pipes, e escrever só numa linha o código, evitando também criar dataframes intermédios.</p>
<blockquote>
<p>cuidado com o summarise_at, pensar qual o o número do campo da tabela virtual criada.</p>
</blockquote>
</div>
<div id="group-by-summarize-e-melt" class="section level2">
<h2><span class="header-section-number">1.7</span> Group by, summarize e melt</h2>
<h2><span class="header-section-number">1.8</span> Group by, summarize e melt</h2>
<p>Calcula as médias e freq, de uma variável</p>
<pre class="r"><code>#média
groupmean&lt;-group_by(MCBARRIERSERA,ERA)
Expand All @@ -612,15 +629,21 @@ <h2><span class="header-section-number">1.7</span> Group by, summarize e melt</h

ODsViagens&lt;-group_by(VIAGENSredux, Tipo, ID0, ID1)
ODsViagens&lt;-summarise(ODsViagens,sum(DistanciaM), n())</code></pre>
<div id="melt---dissolve-as-colunas-em-várias-linhas-repetidas" class="section level3">
<h3><span class="header-section-number">1.7.1</span> Melt - dissolve as colunas em várias linhas repetidas</h3>
<div id="group-by-e-summarize-com-pipes" class="section level3">
<h3><span class="header-section-number">1.8.1</span> Group by e summarize com pipes</h3>
<pre class="r"><code>VIAGENSamlGAMA &lt;- VIAGENSaml %&gt;% group_by(inter, gama) %&gt;% summarise(viagens = sum(PESOFIN), count=n())
VIAGENSamlGAMAlisboa &lt;- VIAGENSaml %&gt;% filter(DTCC_or==&quot;1106&quot; | DTCC_de==&quot;1106&quot; ) %&gt;% group_by(inter, gama) %&gt;% summarise(viagens = sum(PESOFIN)) #filtrando apenas algumas</code></pre>
</div>
<div id="melt" class="section level3">
<h3><span class="header-section-number">1.8.2</span> Melt</h3>
<p>Dissolve as colunas em várias linhas repetidas</p>
<pre class="r"><code>MCBARRIERSERAmelt &lt;- melt(MCBARRIERSERA, id.vars=c(&quot;names&quot;,&quot;MCBARRIERSERA.MEAN&quot;, &quot;MCBARRIERSERA.FREQ&quot;))</code></pre>
</div>
</div>
<div id="variáveis-categóricas" class="section level2">
<h2><span class="header-section-number">1.8</span> Variáveis categóricas</h2>
<h2><span class="header-section-number">1.9</span> Variáveis categóricas</h2>
<div id="factors-e-levels" class="section level3">
<h3><span class="header-section-number">1.8.1</span> Factors e levels</h3>
<h3><span class="header-section-number">1.9.1</span> Factors e levels</h3>
<pre class="r"><code>#Criar factors e levels
TODOS$Gender&lt;-factor(TODOS$Gender)
TODOS$Gender&lt;-factor(TODOS$Gender, levels = c(&quot;Male&quot;, &quot;Female&quot;, &quot;Other&quot;)) #definir logo a ordem
Expand Down Expand Up @@ -652,7 +675,7 @@ <h3><span class="header-section-number">1.8.1</span> Factors e levels</h3>
</div>
</div>
<div id="operações-nas-tabelas-ou-matrizes" class="section level2">
<h2><span class="header-section-number">1.9</span> Operações nas tabelas ou matrizes</h2>
<h2><span class="header-section-number">1.10</span> Operações nas tabelas ou matrizes</h2>
<pre class="r"><code>#Somar colunas
CTRIGGERS$SomaPontos &lt;- rowSums(CTRIGGERS[,c(146:193,196)])

Expand Down Expand Up @@ -689,7 +712,7 @@ <h2><span class="header-section-number">1.9</span> Operações nas tabelas ou ma
MCTRIGGERS &lt;- CTRIGGERS[,c(146:193,196)]/CTRIGGERS$SomaPontos</code></pre>
</div>
<div id="gravar-outputs" class="section level2">
<h2><span class="header-section-number">1.10</span> Gravar outputs</h2>
<h2><span class="header-section-number">1.11</span> Gravar outputs</h2>
<pre class="r"><code>#gravar tabela em ficheiro nativo R
saveRDS(TABELA, &quot;Tabela.Rds&quot;)

Expand Down
34 changes: 30 additions & 4 deletions COMPILACAO.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ library(summarytools) #contínuas e categóricas
library(fastDummies) #criar variáveis dummy a partir de categóricas
```

```rlibrary
#instalar uma versão específica de um package - útil para donwgrade
```r
#instalar uma versão específica de um package - útil para donwgrade
require(devtools)
install_version("stplanr", version = "0.3.1", repos = "http://cran.us.r-project.org")
```
Expand Down Expand Up @@ -272,12 +272,18 @@ TABELA<-TABELA[is.na(TABELA$Modo0), -c(2,3,8:15)] #remover várias colunas segun

#Extrair uma parte da tabela
SubClustNC <-subset(SubNC, select=c(240,241))
#ver também filtros abaixo...

#reordenar tabela por variável
#reordenar linhas, por variável
TABELA <- TABELA[order(TABELA$ID_viagem),]
TABELA <- TABELA[order(TABELA$Zona, TABELA$ID_viagem),] #por mais de uma variável
TABELA <- TABELA[order(TABELA$Zona, -TABELA$ID_viagem),] #por mais de uma variável, com ordem decrescente na segunda

#reodenar linhas, usando dyplr
TABELA <- arrange(TABELA, var1) #ascendente
TABELA <- arrange(TABELA, desc(var1)) #descendente, por 1 variável
TABELA <- arrange(TABELA, desc(var1, var2)) #por mais que 1 variável

#adicionar um ID a cada linha, em ordem sequencial
TABELA$ID<-seq.int(nrow(TABELA))

Expand Down Expand Up @@ -372,6 +378,18 @@ Horas2016<-as.data.frame(seq.POSIXt(ISOdate(2016,1,1,0), ISOdate(2016,12,31,23),
```
>__Dica:__ explorar o [_lubridate_](https://github.com/rstudio/cheatsheets/raw/master/lubridate.pdf)
##Pipes e filtros
Outra maneira de pegar apenas numa parte da tabela, é usando filtros (uma função do [dyplr](https://dplyr.tidyverse.org/))

```r
filter(TABELA, var1=="Autocarro")
filter(TABELA, var1!=var2) #selecciona os casos em que a var1 é diferente da var2
TABELA %>% filter(var1!=var2) #usando pipes, omite-se o primeiro argumento
```
Pode-se usar infinitos pipes, e escrever só numa linha o código, evitando também criar dataframes intermédios.

> cuidado com o summarise_at, pensar qual o o número do campo da tabela virtual criada.
##Group by, summarize e melt
Calcula as médias e freq, de uma variável

Expand All @@ -390,7 +408,15 @@ ODsViagesStatistics<-summarise(v, cont=n(), min(DuracaoMinutos), max(DuracaoMinu
ODsViagens<-group_by(VIAGENSredux, Tipo, ID0, ID1)
ODsViagens<-summarise(ODsViagens,sum(DistanciaM), n())
```
###Melt - dissolve as colunas em várias linhas repetidas
###Group by e summarize com pipes

```r
VIAGENSamlGAMA <- VIAGENSaml %>% group_by(inter, gama) %>% summarise(viagens = sum(PESOFIN), count=n())
VIAGENSamlGAMAlisboa <- VIAGENSaml %>% filter(DTCC_or=="1106" | DTCC_de=="1106" ) %>% group_by(inter, gama) %>% summarise(viagens = sum(PESOFIN)) #filtrando apenas algumas
```

###Melt
Dissolve as colunas em várias linhas repetidas

```r
MCBARRIERSERAmelt <- melt(MCBARRIERSERA, id.vars=c("names","MCBARRIERSERA.MEAN", "MCBARRIERSERA.FREQ"))
Expand Down

0 comments on commit 88b72b6

Please sign in to comment.