class: center, middle, inverse, title-slide # Manipulacion de datos
dplyr - tidyr
## IntroduccIon al manejo de datos ### Paul Efren Santos Andrade
@PaulEfrenSantos
### 15 agosto, 2019 --- class: fullscreen, inverse, top, center, text-white --- layout: true # *dplyr*? --- .left-column[ ![](images/dplyr.png) ] .right-column[ - Proporciona un conjunto consistente de verbos que lo ayudan a resolver los desafíos más comunes de manipulación de datos. - `select()` - `filter()` - `mutate()` - `group_by()` - `summarize()` ] --- layout: true # dplyr .left-code[ ### `select()` permite - Recuperar columnas - Omitir columnas - Rordenar ] --- .right-plot[ ```r datos %>% select(especie, hc, ht) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> </tr> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 20 </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% select( -c(especie, hc, ht, cal, bloque)) ``` <table> <thead> <tr> <th style="text-align:right;"> numero </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> form </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 26 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 29 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 16 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% select( cal, dap, ilm, everything()) ``` <table> <thead> <tr> <th style="text-align:right;"> cal </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> numero </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> form </th> <th style="text-align:left;"> bloque </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 26 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 29 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 16 </td> </tr> </tbody> </table> ] --- layout: true # dplyr .left-code[ ### `filter()` permite - Recuperar filas **==** - Omitir filas **!=** - Con base en criterios logicos ] --- .right-plot[ ```r datos %>% filter(especie == "CEDRO") ``` <table> <thead> <tr> <th style="text-align:right;"> numero </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> cal </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> form </th> <th style="text-align:left;"> bloque </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 7 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 18 </td> </tr> <tr> <td style="text-align:right;"> 11 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 23 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 25 </td> </tr> <tr> <td style="text-align:right;"> 20 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A3 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 32 </td> </tr> <tr> <td style="text-align:right;"> 31 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A5 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 82 </td> </tr> <tr> <td style="text-align:right;"> 37 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 95 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 23 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 98 </td> </tr> <tr> <td style="text-align:right;"> 41 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> B1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 8 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% filter(especie != "CEDRO") ``` <table> <thead> <tr> <th style="text-align:right;"> numero </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> cal </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> form </th> <th style="text-align:left;"> bloque </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 26 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 29 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 6 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 16 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% filter(hc > 12, hc < 24 ) ``` <table> <thead> <tr> <th style="text-align:right;"> numero </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> cal </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> form </th> <th style="text-align:left;"> bloque </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 26 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 29 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 6 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 16 </td> </tr> <tr> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> MORADO </td> <td style="text-align:right;"> 46 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A2 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% filter(hc > 12) ``` <table> <thead> <tr> <th style="text-align:right;"> numero </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> dap </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> cal </th> <th style="text-align:right;"> ilm </th> <th style="text-align:right;"> form </th> <th style="text-align:left;"> bloque </th> <th style="text-align:right;"> xc </th> <th style="text-align:right;"> yc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 61 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 26 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 10 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 29 </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 12 </td> </tr> <tr> <td style="text-align:right;"> 6 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> A1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 16 </td> </tr> <tr> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> MORADO </td> <td style="text-align:right;"> 46 </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> A2 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> </tr> </tbody> </table> ] --- .right-plot[ **Algunos operadores** .font70.center[ | Operador| Signif | |:----:|:--------:| | ==| `igual` | | != | `diferente` | | > | `mayor que` | | < | `menor que` | | >= | `mayor igual que` | | <= | `menor igual que` | | | | `o` | | & | `y` | ] ] --- layout: true # dplyr .left-code[ ### `mutate()` permite - Crear nuevas variables - Rescribir una variable ] --- .right-plot[ ```r datos %>% select(especie, hc, ht) %>% mutate(hc_cor = hc + 3) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> <th style="text-align:right;"> hc_cor </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 18 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 21 </td> </tr> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 15 </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 16 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 14 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 17 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 19 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% select(especie, hc, ht) %>% mutate(hc = hc + 3) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> hc </th> <th style="text-align:right;"> ht </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 21 </td> <td style="text-align:right;"> 25 </td> </tr> <tr> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 24 </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 20 </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 16 </td> <td style="text-align:right;"> 21 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 22 </td> </tr> </tbody> </table> ] --- layout: true # dplyr .left-code[ ### `distinct()` permite - Elementos distintos de una variable ] --- .right-plot[ ```r datos %>% distinct(especie) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TASAA </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> </tr> <tr> <td style="text-align:left;"> TAJIBO </td> </tr> <tr> <td style="text-align:left;"> CEDRO </td> </tr> <tr> <td style="text-align:left;"> GABETILLO </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% distinct(form) ``` <table> <thead> <tr> <th style="text-align:right;"> form </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> </tr> </tbody> </table> ] --- layout: true # dplyr .left-code[ ### `count()` permite - Conteo de los diferentes elementos. ] --- .right-plot[ ```r datos %>% count(especie) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> n </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> AJUNAO </td> <td style="text-align:right;"> 5 </td> </tr> <tr> <td style="text-align:left;"> AZUCARO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 17 </td> </tr> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 28 </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 18 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% count(form, especie) ``` <table> <thead> <tr> <th style="text-align:right;"> form </th> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> n </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 7 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 5 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> CUTA </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> GABETILLO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> JICHITURIQUI </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> MAPAJO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> MOMOQUI </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> MORADO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> PAQUIO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 5 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 8 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 8 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> CUTA </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> GABETILLO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> JICHITURIQUI </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> MAPAJO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> MOMOQUI </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> MORADO </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 8 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> AJUNAO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> AZUCARO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 5 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 7 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 6 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> CUTA </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> GABETILLO </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> JICHITURIQUI </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> MAPAJO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> MORA </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> MORADO </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> PAQUIO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> SAHUINTO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> TAJIBO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 6 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> AZUCARO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 4 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 7 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> CUTA </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> GABETILLO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> JICHITURIQUI </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> MAPAJO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> MORA </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> PAQUIO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;"> TASAA </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> AJUNAO </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> GABETILLO </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> MOMOQUI </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> MORA </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> SAHUINTO </td> <td style="text-align:right;"> 3 </td> </tr> </tbody> </table> ] --- layout: true # dplyr .left-code[ ### `summarize()` permite - Conglomera las observaciones. - Genera resumenes. ] --- .right-plot[ ```r datos %>% summarise(n_especies = n()) ``` <table> <thead> <tr> <th style="text-align:right;"> n_especies </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 183 </td> </tr> </tbody> </table> ] --- .right-plot[ ```r datos %>% summarise(mean_hc = mean(hc)) ``` <table> <thead> <tr> <th style="text-align:right;"> mean_hc </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 12.61202 </td> </tr> </tbody> </table> ] --- layout: true # dplyr .left-code[ ### `group_by() & summarise()` - Permiten ejecutar operaciones sobre sub-grupos. ] --- .right-plot[ ```r datos %>% group_by(especie) %>% summarise(n_especies = n()) ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> n_especies </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> AJUNAO </td> <td style="text-align:right;"> 5 </td> </tr> <tr> <td style="text-align:left;"> AZUCARO </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:left;"> BI </td> <td style="text-align:right;"> 17 </td> </tr> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 28 </td> </tr> <tr> <td style="text-align:left;"> CUCHI </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> CURUPAO </td> <td style="text-align:right;"> 18 </td> </tr> </tbody> </table> ] --- .right-plot[ **Algunas funciones** .font70.center[ | Nombre | Codigo | |:----:|:--------:| | Promedio | `mean( )` | | Mediana | `median( )` | | Raiz cuadrada | `sqrt( )` | | Desviacion estandar| `sd( )` | | Varianza | `var( )` | | Suma | `sum( )` | | Minimo | `min( )` | | Maximo | `max( )` | ] ] --- layout: false # group_by() & summarise() ```r cedro_roble <- datos %>% filter(especie %in% c("CEDRO", "ROBLE")) %>% group_by(especie) %>% summarise(mean_hc = mean(hc), mead_ht = mean(ht)) cedro_roble ``` <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> mean_hc </th> <th style="text-align:right;"> mead_ht </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 13.07143 </td> <td style="text-align:right;"> 21.64286 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 13.00000 </td> <td style="text-align:right;"> 22.16667 </td> </tr> </tbody> </table> --- layout: false class: inverse center middle text-white .font200[<br> TIDY DATA] --- # Ordenamiento de datos .left-code[ ![](images/hadley.jpg) __Hadley Wickham__ [Tidy data, 2014](https://www.jstatsoft.org/article/view/v059i10) ] .right-plot[ ![](images/tidy_data.png) ] --- .right-column[ #### **Tidy** Data 1. Cada variable representada en una .hl[columna] 2. Cada muestra, individuo representado en una .hl[fila] 3. Cada una de las observaciones es una celda ![](images/tidy_format.png) ] --- layout: false class: center middle **Tidy data sets are all alike; but<br> every messy data set is messy in its<br> own way**<br>__Hadley Wickham__ --- layout: false # Un tidy .right-column[ <table> <thead> <tr> <th style="text-align:left;"> country </th> <th style="text-align:right;"> 1997 </th> <th style="text-align:right;"> 2002 </th> <th style="text-align:right;"> 2007 </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Canada </td> <td style="text-align:right;"> 30.30584 </td> <td style="text-align:right;"> 31.90227 </td> <td style="text-align:right;"> 33.39014 </td> </tr> <tr> <td style="text-align:left;"> China </td> <td style="text-align:right;"> 1230.07500 </td> <td style="text-align:right;"> 1280.40000 </td> <td style="text-align:right;"> 1318.68310 </td> </tr> <tr> <td style="text-align:left;"> United States </td> <td style="text-align:right;"> 272.91176 </td> <td style="text-align:right;"> 287.67553 </td> <td style="text-align:right;"> 301.13995 </td> </tr> </tbody> </table> ] -- .right-column[ ```r tidy_pop <- gather(messy_pop, 'year', 'pop', -country) ``` <table> <thead> <tr> <th style="text-align:left;"> country </th> <th style="text-align:left;"> year </th> <th style="text-align:right;"> pop </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Canada </td> <td style="text-align:left;"> 1997 </td> <td style="text-align:right;"> 30.306 </td> </tr> <tr> <td style="text-align:left;"> China </td> <td style="text-align:left;"> 1997 </td> <td style="text-align:right;"> 1230.075 </td> </tr> <tr> <td style="text-align:left;"> United States </td> <td style="text-align:left;"> 1997 </td> <td style="text-align:right;"> 272.912 </td> </tr> <tr> <td style="text-align:left;"> Canada </td> <td style="text-align:left;"> 2002 </td> <td style="text-align:right;"> 31.902 </td> </tr> <tr> <td style="text-align:left;"> China </td> <td style="text-align:left;"> 2002 </td> <td style="text-align:right;"> 1280.400 </td> </tr> <tr> <td style="text-align:left;"> United States </td> <td style="text-align:left;"> 2002 </td> <td style="text-align:right;"> 287.676 </td> </tr> <tr> <td style="text-align:left;"> Canada </td> <td style="text-align:left;"> 2007 </td> <td style="text-align:right;"> 33.390 </td> </tr> <tr> <td style="text-align:left;"> China </td> <td style="text-align:left;"> 2007 </td> <td style="text-align:right;"> 1318.683 </td> </tr> <tr> <td style="text-align:left;"> United States </td> <td style="text-align:left;"> 2007 </td> <td style="text-align:right;"> 301.140 </td> </tr> </tbody> </table> ] --- layout: false class: center middle ![](images/woo_2018.png) [Karl W. Bromana & Kara H. Woob](https://www.tandfonline.com/doi/pdf/10.1080/00031305.2017.1375989) --- layout: false class: center middle <div class="kable-table"> <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> mean_hc </th> <th style="text-align:right;"> mead_ht </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 13.07143 </td> <td style="text-align:right;"> 21.64286 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 13.00000 </td> <td style="text-align:right;"> 22.16667 </td> </tr> </tbody> </table> </div> --- layout: false class: center middle ![](images/tidyr.png) --- .left-code[ # gather() ] .right-plot[ <img src="images/gather.gif"> __Alison Presmanes Hill__ ] --- <div class="kable-table"> <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> mean_hc </th> <th style="text-align:right;"> mead_ht </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 13.07143 </td> <td style="text-align:right;"> 21.64286 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 13.00000 </td> <td style="text-align:right;"> 22.16667 </td> </tr> </tbody> </table> </div> -- ```r cedro_roble %>% gather(promedio, valor, - especie) ``` -- <div class="kable-table"> <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:left;"> promedio </th> <th style="text-align:right;"> valor </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:left;"> mean_hc </td> <td style="text-align:right;"> 13.07143 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:left;"> mean_hc </td> <td style="text-align:right;"> 13.00000 </td> </tr> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:left;"> mead_ht </td> <td style="text-align:right;"> 21.64286 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:left;"> mead_ht </td> <td style="text-align:right;"> 22.16667 </td> </tr> </tbody> </table> </div> --- .left-code[ # spread() ] .right-plot[ <img src="images/spread.gif"> __Alison Presmanes Hill__ ] --- <div class="kable-table"> <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:left;"> promedio </th> <th style="text-align:right;"> valor </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:left;"> mean_hc </td> <td style="text-align:right;"> 13.07143 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:left;"> mean_hc </td> <td style="text-align:right;"> 13.00000 </td> </tr> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:left;"> mead_ht </td> <td style="text-align:right;"> 21.64286 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:left;"> mead_ht </td> <td style="text-align:right;"> 22.16667 </td> </tr> </tbody> </table> </div> -- ```r cedro_roble_largo %>% spread(promedio, valor) ``` -- <div class="kable-table"> <table> <thead> <tr> <th style="text-align:left;"> especie </th> <th style="text-align:right;"> mead_ht </th> <th style="text-align:right;"> mean_hc </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> CEDRO </td> <td style="text-align:right;"> 21.64286 </td> <td style="text-align:right;"> 13.07143 </td> </tr> <tr> <td style="text-align:left;"> ROBLE </td> <td style="text-align:right;"> 22.16667 </td> <td style="text-align:right;"> 13.00000 </td> </tr> </tbody> </table> </div> --- layout: false class: center middle ![](images/tidyr_spread_gather.png) .footnote[<https://github.com/allisonhorst/stats-illustrations>] --- layout: false class: center middle ![](images/dplyr_mutate.png) .footnote[<https://github.com/allisonhorst/stats-illustrations>]