class: inverse, center, middle <br> #### Curso de introducción a R (SFPIE) # Introducción al tidyverse <br> ### Pedro J. Pérez #### 2021, mayo ###### (actualizadas el 15-03-2024) <br><br> #### [<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"></path></svg>](mailto:pedro.j.perez@uv.es) [pedro.j.perez@uv.es](mailto:pedro.j.perez@uv.es) --- class: inverse, center, middle ### Historia reciente de R <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> #### R-base vs. tidyverse --- ##### Recientemente hubo a kind of revolution in <svg viewBox="0 0 581 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"></path></svg>: Hadley y el tidyverse - R **era** un lenguaje "oscuro" para estadísticos y académicos, pero ... - ... recientemente ha habido una especie de **revolución** en el universo <svg viewBox="0 0 581 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"></path></svg> -- .pull-left[ - [Hadley Wickham](http://hadley.nz/), científico jefe de RStudio, [revolucionó el universo](https://priceonomics.com/hadley-wickham-the-man-who-revolutionized-r/?utm_campaign=Data%2BElixir&utm_medium=email&utm_source=Data_Elixir_46) <svg viewBox="0 0 581 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"></path></svg>, creando el '*Hadleyverse*' <img src="data:image/png;base64,#./imagenes/ss_02_img_07_Hadley.jpg" width="76%" style="display: block; margin: auto;" /> ] -- .pull-right[ - El '*Hadleyverse*', se ha convertido en el [tidyverse](https://www.tidyverse.org/) gracias a un grupo de desarrolladores, por ejemplo: <img src="data:image/png;base64,#./imagenes/ss_02_img_08_gente-tidyverse.jpg" width="95%" style="display: block; margin: auto;" /> ] --- background-image: url(data:image/png;base64,#imagenes/ss_05_img_03_tidyverse-hex.png) background-position: 99% 1% background-size: 6% ##### ¿qué es el tidyverse? - Una nueva forma de escribir código y afrontar el análisis de datos con R. - Según su propia página web, el [tidyverse](https://www.tidyverse.org/) es: <img src="data:image/png;base64,#./imagenes/ss_05_img_05_pkgs-tidyverse.png" width="65%" style="display: block; margin: auto;" /> - **Traducido**, es un grupo de paquetes que se han diseñado con los mismos principios y que, por tanto, trabajan bien juntos y que han cambiado mucho, y a mejor, la forma de programar y afrontar el análisis de datos con R. - Ahora mismo, el **tidyverse** [ya es el estándar](https://twitter.com/R_Hisp/status/1399635575712399360) --- background-image: url(data:image/png;base64,#imagenes/ss_05_img_03_tidyverse-hex.png) background-position: 99% 1% background-size: 6% ##### R-base vs. tidyverse - Podemos pensar que hay 2 formas de escribir código en <svg viewBox="0 0 581 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"></path></svg>: R-base y tidyverse. - Nosotros escribiremos, principalmente, **à la tidyverse**. - Escribir *à la tidyverse* [tiene ventajas](https://twitter.com/andrewheiss/status/1359583543509348356?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1359583543509348356%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=file%3A%2F%2F%2Fhome%2Fpjpv%2FEscritorio%2Fslides_curso-R_2021_ok%2Fslides_01_intro_a.html1) y, además, es que [ya es el estándar](https://twitter.com/R_Hisp/status/1399635575712399360) <br> -- ##### tiene ventajas, p. ej ... la claridad y facilidad a la hora de leer el código. -- - **R-base way**: ```r leave_house(get_dressed(get_out_of_bed(wake_up(me, time = "8:00"), side = "correct"), pants = TRUE, shirt = TRUE), car = TRUE, bike = FALSE) ``` -- - **à la tidyverse** (el operador %>% se llama "the pipe"): ```r me %>% wake_up(time = "8:00") %>% get_out_of_bed(side = "correct") %>% get_dressed(pants = TRUE, shirt = TRUE) %>% leave_house(car = TRUE, bike = FALSE) ``` --- background-image: url(data:image/png;base64,#imagenes/ss_00_RR_icono.jpeg) background-position: 99% 1% background-size: 4% ##### Pipe nativa (|>) - La [versión 4.1.0 de R](https://www.jumpingrivers.com/blog/new-features-r410-pipe-anonymous-functions/) supuso la aparición de una **pipe nativa** en R: **|>** - En la [versión 4.2.0](https://cran.r-project.org/doc/manuals/r-devel/NEWS.html) se mejora la pipe nativa introduciendo un ["placeholder"](https://twitter.com/henrikbengtsson/status/1501306369319735300). - Aún así, la pipe nativa tiene algunas [limitaciones](https://github.com/bwiernik/pipebind/). Puedes ver las diferencias entres las 2 pipe's [aquí](https://www.tidyverse.org/blog/2023/04/base-vs-magrittr-pipe/) y [aquí](https://ivelasq.rbind.io/blog/understanding-the-r-pipe/) ##### ¿qué pasará en el futuro? - Pues parece que ahora sí que [esto va en serio](https://twitter.com/hadleywickham/status/1519313737773158401?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Etweet%7Ctwtr%5Etrue) <img src="data:image/png;base64,#./imagenes/ss_00_new_pipe.jpeg" width="45%" style="display: block; margin: auto 0 auto auto;" /> --- class: inverse, center, middle ### Investigación reproducible en el tidyverse <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> <br> -- #### Desde el tidyverse se creó un ecosistema (Rmarkdown @ friends) para generar documentos reproducibles --- background-image: url(data:image/png;base64,#imagenes/ss_00_new_logo_rmd.png) background-position: 99% 1% background-size: 5% ##### Tidyverse workflow e investigación reproducible <img src="data:image/png;base64,#./imagenes/tt_06_img_01_explore-visualice.png" width="60%" style="display: block; margin: auto;" /> -- - Realizaremos **todas las etapas** de un análisis de datos **desde el entorno R** <br> -- - La última etapa, comunicar, se hacía con Rmarkdown ... hasta que llegó **Quarto** --- class:: inverse2 <br><br><br> ### Sé que todos somos mayores y muchos de nosotros profesores (o técnicos), pero aún así ... un par de consejos <br> <html><div style='float:left'></div><hr color='#EB811B' size=1px width=996px></html> <br><br> ##### En serio!! Completamente en serio!! --- class: center ### 1. Es muy-muy importante la actitud!!! -- .pull-left[ ##### Hay que intentar no agobiarse ... <img src="data:image/png;base64,#./imagenes/ss_03_img_01_angry-computer.jpg" width="95%" style="display: block; margin: auto;" /> <br> .small[**Errores tontos**, we will have [a few](https://twitter.com/cogscimom/status/1354508785365078016/photo/1), well ... [a lot](https://twitter.com/WeAreRLadies/status/1523777331386458178). Es un poco frustante, pero [completamente normal](https://twitter.com/allison_horst/status/1213275783675822080?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1213275783675822080%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fperezp44.github.io%2Fintro-ds-21-22-web%2Ftutoriales%2Ftt_02_primeros-pasos-con-R.html) !!!!!!] ] -- .pull-right[ #### ... mejor dejarse llevar <img src="data:image/png;base64,#./imagenes/ss_03_img_02_baby-surf.jpg" width="95%" style="display: block; margin: auto;" /> ] --- class: center ##### 2. Igual, sólo igual, nos hace falta otra forma de aprender (WTF!!!) -- - Creo que [este video](https://www.youtube.com/watch?v=_5LhYsKpOOA) os puede ayudar. -- - [Aquí](https://jakevdp.github.io/PythonDataScienceHandbook/01.01-help-and-documentation.html) señalan que: Being an effective practitioner of DS is **less about memorizing** the tool or command you should use for every possible situation, and **more about learning to effectively find the information you don't know**, whether through a web search engine or another means. - Es decir, hay que saber **buscar ayuda**, por ejemplo [aquí](https://support.rstudio.com/hc/en-us/articles/200552336-Getting-Help-with-R) o [aquí](https://www.r-project.org/help.html), lo explican bien. Un [ejemplo](https://twitter.com/MaxPrimbs/status/1514544495349612546) -- .pull-left[ <img src="data:image/png;base64,#./imagenes/ss_01_escolta_matplotlib.png" width="98%" style="display: block; margin: auto auto auto 0;" /> ] -- .pull-right[ <img src="data:image/png;base64,#./imagenes/ss_01_jessy_montipak.png" width="81%" style="display: block; margin: auto auto auto 0;" /> <img src="data:image/png;base64,#./imagenes/ss_01_googling_2.png" width="79%" style="display: block; margin: auto auto auto 0;" /> ] --- background-image: url(data:image/png;base64,#imagenes/ss_03_img_02_baby-surf.jpg) background-size: cover ### Vengaaaa, vamos allá!!!! -- <img src="data:image/png;base64,#./imagenes/ss_00_tu_puedes.png" width="20%" style="display: block; margin: auto auto auto 0;" />