Introducción

La ciencia de datos es una disciplina apasionante que te permite transformar datos brutos en comprensión, perspicacia y conocimiento. Los objetivos de R para la Ciencia de Datos son ayudarte a aprender las herramientas más importantes de R que te permitirán hacer ciencia de datos de forma eficiente y reproducible, ¡y divertirte un poco por el camino! Después de leer este libro, tendrás las herramientas necesarias para enfrentarte a una amplia variedad de retos de la ciencia de datos utilizando las mejores partes de R.

Prefacio a la Segunda Edición

¡Bienvenido a la segunda edición de R para la Ciencia de Datos (R4DS)! Se trata de una importante revisión de la primera edición, eliminando material que ya no consideramos útil, añadiendo material que desearíamos haber incluido en la primera edición y, en general, actualizando el texto y el código para reflejar los cambios en las buenas prácticas. También estamos muy contentos de dar la bienvenida a una nueva coautora: Mine Çetinkaya-Rundel, una destacada educadora en ciencia de datos y una de nuestras colegas de Posit (la empresa antes conocida como RStudio).

A continuación, un breve resumen de los cambios más importantes:

  • La primera parte del libro ha pasado a llamarse "Juego completo". El objetivo de esta sección es darte los detalles aproximados del "juego completo" de la ciencia de datos antes de sumergirnos en los detalles.

  • La segunda parte del libro es "Visualizar". Esta parte ofrece una cobertura más exhaustiva de las herramientas y buenas prácticas de visualización de datos en comparación con la primera edición. El mejor lugar para obtener todos los detalles sigue siendo el libro ggplot2, pero ahora R4DS cubre más de las técnicas más importantes.

  • La tercera parte del libro se llama ahora "Transformación" y gana nuevos capítulos sobre números, vectores lógicos y valores perdidos. Antes formaban parte del capítulo sobre transformación de datos, pero necesitaban mucho más espacio para cubrir todos los detalles.

  • La cuarta parte del libro se llama "Importar". Es un nuevo conjunto de capítulos que va más allá de la lectura de archivos de texto plano para trabajar con hojas de cálculo, sacar datos de bases de datos, trabajar con big data, rectangular datos jerárquicos y raspar datos de sitios web.

  • La parte "Programa" se mantiene, pero se ha reescrito de arriba abajo para centrarse en las partes más importantes de la escritura de funciones y la iteración. La escritura de funciones incluye ahora detalles sobre cómo envolver funciones tidyverse (hacer frente a los retos de la evaluación tidyverse), ya que esto se ha vuelto mucho más fácil e importante en los últimos años. Hemos añadido un nuevo capítulo sobre importantes funciones base de R que es probable que veas en código R salvaje.

  • Se ha eliminado la parte de "Modelado". Nunca tuvimos espacio suficiente para hacer justicia al modelado, y ahora existen recursos mucho mejores. En general, recomendamos utilizar los paquetes tidymodels y leer Tidy Modeling with R de Max Kuhn y Julia Silge (O'Reilly).

  • La parte "Comunicar" se mantiene, pero se ha actualizado a fondo para incluir Quarto en lugar de R Markdown. Esta edición del libro se ha escrito en Quarto, y está claro que es la herramienta del futuro.

Lo que aprenderás

La ciencia de datos es un campo muy amplio, y no hay forma de que puedas dominarlo todo leyendo un solo libro. Este libro pretende darte una base sólida en las herramientas más importantes y los conocimientos suficientes para que encuentres los recursos para aprender más cuando sea necesario. Nuestro modelo de los pasos de un proyecto típico de ciencia de datos se parece a la Figura I-1.

A diagram displaying the data science cycle: Import -> Tidy -> Understand (which has the phases Transform -> Visualize -> Model in a cycle) -> Communicate. Surrounding all of these is Communicate.

Figura I-1. En nuestro modelo del proceso de ciencia de datos, empiezas con la importación y ordenación de los datos. A continuación, comprendes tus datos con un ciclo iterativo de transformación, visualización y modelado. Terminas el proceso comunicando tus resultados a otros humanos.

En primer lugar, debes importar tus datos a R. Esto suele significar que tomas los datos almacenados en un archivo, base de datos o interfaz de programación de aplicaciones web (API) y los cargas en un marco de datos en R. ¡Si no puedes introducir tus datos en R, no podrás hacer ciencia de datos con ellos!

Una vez que hayas importado tus datos, conviene ordenarlos. Ordenar tus datos significa almacenarlos de una forma coherente que haga coincidir la semántica del conjunto de datos con la forma en que se almacenan. En resumen, cuando tus datos están ordenados, cada columna es una variable y cada fila es una observación. Los datos ordenados son importantes porque la estructura coherente te permite centrar tus esfuerzos en responder a preguntas sobre los datos, no en luchar para que los datos tengan la forma adecuada para las distintas funciones.

Una vez que tienes los datos ordenados, un paso siguiente habitual es transformarlos. La transformación incluye acotar las observaciones de interés (como todas las personas de una ciudad o todos los datos del último año), crear nuevas variables que sean funciones de variables existentes (como calcular la velocidad a partir de la distancia y el tiempo) y calcular un conjunto de estadísticas de resumen (como recuentos o medias). Juntas, la ordenación y la transformación se denominan lucha, porque conseguir que tus datos tengan una forma con la que sea natural trabajar, ¡a menudo parece una lucha!

Una vez que tienes los datos ordenados con las variables que necesitas, hay dos motores principales de generación de conocimiento: la visualización y el modelado. Tienen puntos fuertes y débiles complementarios, por lo que cualquier análisis de datos real iterará entre ellos muchas veces.

La visualización es una actividad fundamentalmente humana. Una buena visualización te mostrará cosas que no esperabas o planteará nuevas preguntas sobre los datos. Una buena visualización también puede insinuarte que estás haciendo la pregunta equivocada o que necesitas recopilar datos diferentes. Las visualizaciones pueden sorprenderte, pero no escalan especialmente bien porque requieren que un humano las interprete.

Los modelos son herramientas complementarias a la visualización. Una vez que hayas precisado suficientemente tus preguntas, puedes utilizar un modelo para responderlas. Los modelos son fundamentalmente herramientas matemáticas o computacionales, por lo que suelen escalar bien. Incluso cuando no lo hacen, ¡suele ser más barato comprar más ordenadores que más cerebros! Pero todo modelo hace suposiciones y, por su propia naturaleza, un modelo no puede cuestionar sus propias suposiciones. Eso significa que un modelo no puede sorprenderte fundamentalmente.

El último paso de la ciencia de datos es la comunicación, una parte absolutamente crítica de cualquier proyecto de análisis de datos. No importa lo bien que tus modelos y tu visualización te hayan llevado a comprender los datos a menos que también puedas comunicar tus resultados a los demás.

Alrededor de todas estas herramientas está la programación. La programación es una herramienta transversal que utilizas en casi todas las partes de un proyecto de ciencia de datos. No necesitas ser un programador experto para ser un científico de datos de éxito, pero aprender más sobre programación merece la pena, porque convertirte en un mejor programador te permite automatizar tareas comunes y resolver nuevos problemas con mayor facilidad.

Utilizarás estas herramientas en todos los proyectos de ciencia de datos, pero no son suficientes para la mayoría de los proyectos. Hay una regla aproximada del 80/20 en juego: puedes abordar alrededor del 80% de cada proyecto utilizando las herramientas que aprenderás en este libro, pero necesitarás otras herramientas para abordar el 20% restante. A lo largo de este libro, te indicaremos recursos donde puedes obtener más información.

Cómo está organizado este libro

La descripción anterior de las herramientas de la ciencia de datos está organizada aproximadamente según el orden en que las utilizas en un análisis (aunque, por supuesto, iterarás por ellas varias veces). Sin embargo, según nuestra experiencia, aprender primero a importar y ordenar datos no es lo óptimo porque, el 80% de las veces, es rutinario y aburrido, y el otro 20% de las veces, es raro y frustrante. ¡Ese es un mal lugar para empezar a aprender un nuevo tema! En lugar de eso, empezaremos con la visualización y transformación de datos que ya han sido importados y ordenados. De ese modo, cuando ingieras y ordenes tus propios datos, tu motivación se mantendrá alta porque sabes que el esfuerzo merece la pena.

Dentro de cada capítulo, intentamos seguir un patrón coherente: empezar con algunos ejemplos motivadores para que puedas ver el panorama general y luego sumergirte en los detalles. Cada sección del libro va acompañada de ejercicios que te ayudarán a practicar lo que has aprendido. Aunque puede resultar tentador saltarse los ejercicios, no hay mejor forma de aprender que practicando con problemas reales.

Lo que no aprenderás

Hay varios temas importantes que este libro no cubre. Creemos que es importante centrarse sin piedad en lo esencial para que puedas ponerte en marcha lo antes posible. Eso significa que este libro no puede cubrir todos los temas importantes.

Modelado

El modelado es superimportante para la ciencia de datos, pero es un tema muy amplio y, por desgracia, no tenemos espacio para tratarlo aquí como se merece. Para aprender más sobre modelización, te recomendamos encarecidamente Tidy Modeling with R, de nuestros colegas Max Kuhn y Julia Silge (O'Reilly). Este libro te enseñará la familia de paquetes tidymodels, que, como podrás adivinar por el nombre, comparten muchas convenciones con los paquetes tidyverse que utilizamos en este libro.

Grandes datos

Este libro se centra orgullosa y principalmente en pequeños conjuntos de datos en memoria. Es el lugar adecuado para empezar, porque no puedes enfrentarte a los grandes datos a menos que tengas experiencia con datos pequeños. Las herramientas que aprenderás en la mayor parte de este libro manejarán fácilmente cientos de megabytes de datos, y con un poco de cuidado, normalmente podrás utilizarlas para trabajar con unos pocos gigabytes de datos. También te mostraremos cómo sacar datos de bases de datos y archivos parquet, ambos utilizados a menudo para almacenar big data. No necesariamente podrás trabajar con todo el conjunto de datos, pero eso no es un problema porque sólo necesitas un subconjunto o submuestra para responder a la pregunta que te interesa.

Si trabajas habitualmente con datos más grandes (10-100 GB, digamos), te recomendamos que aprendas más sobre data.table. No lo enseñamos aquí porque utiliza una interfaz diferente a la de tidyverse y requiere que aprendas algunas convenciones diferentes. Sin embargo, es increíblemente más rápido, y merece la pena invertir algo de tiempo en aprenderlo si trabajas con datos de gran tamaño.

Python, Julia y sus amigos

En este libro no aprenderás nada sobre Python, Julia ni ningún otro lenguaje de programación útil para la ciencia de datos. Esto no se debe a que pensemos que estas herramientas son malas. No lo son. Y en la práctica, la mayoría de los equipos de ciencia de datos utilizan una mezcla de lenguajes, a menudo al menos R y Python. Pero creemos firmemente que lo mejor es dominar una herramienta cada vez, y R es un buen punto de partida.

Requisitos previos

Hemos hecho algunas suposiciones sobre lo que ya sabes para sacar el máximo partido a este libro. En general, debes tener conocimientos numéricos, y es útil que ya tengas alguna experiencia básica en programación. Si nunca has programado antes, puede que Hands-On Programming with R de Garrett Grolemund (O'Reilly) te resulte un valioso complemento de este libro.

Necesitas cuatro cosas para ejecutar el código de este libro: R, RStudio, una colección de paquetes de R llamada tidyverse, y un puñado de paquetes más. Los paquetes son las unidades fundamentales del código reproducible de R. Incluyen funciones reutilizables, documentación que describe cómo utilizarlas y datos de muestra.

R

Para descargar R, dirígete a CRAN, la completa red de archivos de R. Una vez al año sale una nueva versión principal de R, y cada año hay dos o tres versiones menores. Es una buena idea actualizarse regularmente. Actualizar puede ser un poco engorroso, sobre todo cuando se trata de versiones mayores que te obligan a reinstalar todos tus paquetes, pero posponerlo sólo lo empeora. Recomendamos R 4.2.0 o posterior para este libro.

RStudio

RStudio es un entorno de desarrollo integrado (IDE) para la programación en R, que puedes descargar desde la página de descargas de RStudio. RStudio se actualiza un par de veces al año, y te avisará automáticamente cuando salga una nueva versión, así que no hace falta que vuelvas a comprobarlo. Es una buena idea actualizar regularmente para aprovechar las últimas y mejores funciones. Para este libro, asegúrate de que tienes al menos RStudio 2022.02.0.

Cuando inicies RStudio, Figura I-2, verás dos regiones clave en la interfaz: el panel de la consola y el panel de salida. Por ahora, todo lo que necesitas saber es que escribes el código R en el panel de la consola y pulsas Intro para ejecutarlo. ¡Aprenderás más cosas a medida que avancemos!1

The RStudio IDE with the panes Console and Output highlighted.

Figura I-2. El IDE de RStudio tiene dos regiones clave: escribe código R en el panel de la consola, a la izquierda, y busca gráficos en el panel de salida, a la derecha.

El Tidyverse

También necesitarás instalar algunos paquetes de R. Un paquete R es una colección de funciones, datos y documentación que amplía las capacidades de R básico. El uso de paquetes es clave para utilizar R con éxito. La mayoría de los paquetes que aprenderás en este libro forman parte del llamado tidyverse. Todos los paquetes del tidyverse comparten una filosofía común de datos y programación en R y están diseñados para trabajar juntos.

Puedes instalar el tidyverse completo con una sola línea de código:

install.packages("tidyverse")

En tu ordenador, escribe esa línea de código en la consola y pulsa Intro para ejecutarla. R descargará los paquetes de CRAN y los instalará en tu ordenador.

No podrás utilizar las funciones, objetos o archivos de ayuda de un paquete hasta que lo cargues. Una vez que hayas instalado un paquete, puedes cargarlo utilizando la función library() función

library(tidyverse)
#> ── Attaching core tidyverse packages ───────────────────── tidyverse 2.0.0 ──
#> ✔ dplyr     1.1.0.9000     ✔ readr     2.1.4     
#> ✔ forcats   1.0.0          ✔ stringr   1.5.0     
#> ✔ ggplot2   3.4.1          ✔ tibble    3.1.8     
#> ✔ lubridate 1.9.2          ✔ tidyr     1.3.0     
#> ✔ purrr     1.0.1          
#> ── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag()    masks stats::lag()
#> ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all 
#>   conflicts to become errors

Esto te indica que el tidyverse carga nueve paquetes: dplyr, forcats, ggplot2, lubridate, purrr, readr, stringr, tibble y tidyr. Éstos se consideran el núcleo del tidyverse porque los utilizarás en casi todos los análisis.

Los paquetes del tidyverse cambian con bastante frecuencia. Puedes ver si hay actualizaciones disponibles ejecutando tidyverse_update().

Otros paquetes

Hay muchos otros paquetes excelentes que no forman parte del tidyverse porque resuelven problemas en un ámbito distinto o están diseñados con un conjunto diferente de principios subyacentes. Esto no los hace mejores ni peores; sólo los hace diferentes. En otras palabras, el complemento del tidyverse no es el messyverse, sino muchos otros universos de paquetes interrelacionados. A medida que te enfrentes a más proyectos de ciencia de datos con R, aprenderás nuevos paquetes y nuevas formas de pensar sobre los datos.

En este libro utilizaremos muchos paquetes ajenos al tidyverse. Por ejemplo, utilizaremos los siguientes paquetes porque nos proporcionan conjuntos de datos interesantes con los que trabajar en el proceso de aprendizaje de R:

install.packages(c("arrow", "babynames", "curl", "duckdb", "gapminder", "ggrepel", 
"ggridges", "ggthemes", "hexbin", "janitor", "Lahman", "leaflet", "maps", 
"nycflights13", "openxlsx", "palmerpenguins", "repurrrsive", "tidymodels", "writexl"))

También utilizaremos una selección de otros paquetes para ejemplos puntuales. No es necesario que los instales ahora, pero recuérdalo siempre que veas un error como éste:

library(ggrepel)
#> Error in library(ggrepel) : there is no package called ‘ggrepel’

significa que tienes que ejecutar install.packages("ggrepel") para instalar el paquete.

Ejecutar código R

La sección anterior te ha mostrado varios ejemplos de ejecución de código R. El código del libro tiene este aspecto

1 + 2
#> [1] 3

Si ejecutas el mismo código en tu consola local, tendrá el siguiente aspecto:

> 1 + 2
[1] 3

Hay dos diferencias principales. En tu consola, escribes después del >, llamado prompt; en el libro no mostramos el prompt. En el libro, la salida se comenta con #>; en tu consola, aparece directamente después de tu código. Estas dos diferencias significan que si estás trabajando con una versión electrónica del libro, puedes copiar fácilmente código del libro y pegarlo en la consola.

A lo largo del libro, utilizamos un conjunto coherente de convenciones para referirnos al código:

  • Las funciones se muestran en una fuente de código y van seguidas de paréntesis, como sum() o mean().

  • Otros objetos de R (como datos o argumentos de funciones) están en una fuente de código, sin paréntesis, como flights o x.

  • A veces, para dejar claro de qué paquete procede un objeto, utilizaremos el nombre del paquete seguido de dos dos puntos, como dplyr::mutate() o nycflights13::flights. Esto también es código R válido.

Otras convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica URL y direcciones de correo electrónico.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias, palabras clave y nombres de archivo.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/r-for-data-science-2e.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Síguenos en Twitter: https://twitter.com/oreillymedia

Míranos en YouTube: https://www.youtube.com/oreillymedia

Agradecimientos

Este libro no es sólo el producto de Hadley, Mine y Garrett, sino que es el resultado de muchas conversaciones (en persona y en línea) que hemos mantenido con muchas personas de la comunidad R. Estamos increíblemente agradecidos por todas las conversaciones que hemos mantenido con todos vosotros; ¡muchas gracias!

Nos gustaría dar las gracias a nuestros revisores técnicos por sus valiosos comentarios: Ben Baumer, Lorna Barclay, Richard Cotton, Emma Rand y Kelly Bodwin.

Este libro se escribió en abierto, y muchas personas contribuyeron mediante pull requests. Un agradecimiento especial a los 259 que habéis contribuido con mejoras a través de pull requests de GitHub (en orden alfabético por nombre de usuario): @a-rosenberg, Tim Becker (@a2800276), Abinash Satapathy (@Abinashbunty), Adam Gruer (@adam-gruer), adi pradhan (@adidoit), A. s. (@Adrianzo), Aep Hidyatuloh (@aephidayatuloh), Andrea Gilardi (@agila5), Ajay Deonarine (@ajay-d), @AlanFeder, Daihe Sui (@alansuidaihe), @alberto-agudo, @AlbertRapp, @aleloi, pete (@alonzi), Alex (@ALShum), Andrew M. (@amacfarland), Andrew Landgraf (@andland), @andyhuynh92, Angela Li (@angela-li), Antti Rask (@AnttiRask), LOU Xun (@aquarhead), @ariespirgel, @august-18, Michael Henry (@aviast), Azza Ahmed (@azzaea), Steven Moran (@bambooforest), Brian G. Barkley (@BarkleyBG), Mara Averick (@batpigandme), Oluwafemi OYEDELE (@BB1464), Brent Brewington (@bbrewington), Bill Behrman (@behrman), Ben Herbertson (@benherbertson), Ben Marwick (@benmarwick), Ben Steinberg (@bensteinberg), Benjamin Yeh (@bentyeh), Betul Turkoglu (@betulturkoglu), Brandon Greenwell (@bgreenwell), Bianca Peterson (@BinxiePeterson), Birger Niklas (@BirgerNi), Brett Klamer (@bklamer), @boardtc, Christian (@c-hoh), Caddy (@caddycarine), Camille V Leonard (@camillevleonard), @canovasjm, Cedric Batailler (@cedricbatailler), Christina Wei (@christina-wei), Christian Mongeau (@chrMongeau), Cooper Morris (@coopermor), Colin Gillespie (@csgillespie), Rademeyer Vermaak (@csrvermaak), Chloe Thierstein (@cthierst), Chris Saunders (@ctsa), Abhinav Singh (@curious-abhinav), Curtis Alexander (@curtisalexander), Christian G. Warden (@cwarden), Charlotte Wickham (@cwickham), Kenny Darrell (@darrkj), David Kane (@davidkane9), David (@davidrsch), David Rubinger (@davidrubinger), David Clark (@DDClark), Derwin McGeary (@derwinmcgeary), Daniel Gromer (@dgromer), @Divider85, @djbirke, Danielle Navarro (@djnavarro), Russell Shean (@DOH-RPS1303), Zhuoer Dong (@dongzhuoer), Devin Pastoor (@dpastoor), @DSGeoff, Devarshi Thakkar (@dthakkar09), Julian During (@duju211), Dylan Cashman (@dylancashman), Dirk Eddelbuettel (@eddelbuettel), Edwin Thoen (@EdwinTh), Ahmed El-Gabbas (@elgabbas), Henry Webel (@enryH), Ercan Karadas (@ercan7), Eric Kitaif (@EricKit), Eric Watt (@ericwatt), Erik Erhardt (@erikerhardt), Etienne B. Racine (@etiennebr), Everett Robinson (@evjrob), @fellennert, Flemming Miguel (@flemmingmiguel), Floris Vanderhaeghe (@florisvdh), @funkybluehen, @gabrivera, Garrick Aden-Buie (@gadenbuie), Peter Ganong (@ganong123), Gerome Meyer (@GeroVanMi), Gleb Ebert (@gl-eb), Josh Goldberg (@GoldbergData), bahadir cankardes (@gridgrad), Gustav W Delius (@gustavdelius), Hao Chen (@hao-trivago), Harris McGehee (@harrismcgehee), @hendrikweisser, Hengni Cai (@hengnicai), Iain (@Iain-S), Ian Sealy (@iansealy), Ian Lyttle (@ijlyttle), Ivan Krukov (@ivan-krukov), Jacob Kaplan (@jacobkap), Jazz Weisman (@jazzlw), John Blischak (@jdblischak), John D. Storey (@jdstorey), Gregory Jefferis (@jefferis), Jeffrey Stevens (@JeffreyRStevens), 蒋雨蒙 (@JeldorPKU), Jennifer (Jenny) Bryan (@jennybc), Jen Ren (@jenren), Jeroen Janssens (@jeroenjanssens), @jeromecholewa, Janet Wesner (@jilmun), Jim Hester (@jimhester), JJ Chen (@jjchern), Jacek Kolacz (@jkolacz), Joanne Jang (@joannejang), @johannes4998, John Sears (@johnsears), @jonathanflint, Jon Calder (@jonmcalder), Jonathan Page (@jonpage), Jon Harmon (@jonthegeek), JooYoung Seo (@jooyoungseo), Justinas Petuchovas (@jpetuchovas), Jordan (@jrdnbradford), Jeffrey Arnold (@jrnold), Jose Roberto Ayala Solares (@jroberayalas), Joyce Robbins (@jtr13), @juandering, Julia Stewart Lowndes (@jules32), Sonja (@kaetschap), Kara Woo (@karawoo), Katrin Leinweber (@katrinleinweber), Karandeep Singh (@kdpsingh), Kevin Perese (@kevinxperese), Kevin Ferris (@kferris10), Kirill Sevastyanenko (@kirillseva), Jonathan Kitt (@KittJonathan), @koalabearski, Kirill Müller (@krlmlr), Rafał Kucharski (@kucharsky), Kevin Wright (@kwstat), Noah Landesberg (@landesbergn), Lawrence Wu (@lawwu), @lindbrook, Luke W Johnston (@lwjohnst86), Kara de la Marck (@MarckK), Kunal Marwaha (@marwahaha), Matan Hakim (@matanhakim), Matthias Liew (@MatthiasLiew), Matt Wittbrodt (@MattWittbrodt), Mauro Lepore (@maurolepore), Mark Beveridge (@mbeveridge), @mcewenkhundi, mcsnowface, PhD (@mcsnowface), Matt Herman (@mfherman), Michael Boerman (@michaelboerman), Mitsuo Shiota (@mitsuoxv), Matthew Hendrickson (@mjhendrickson), @MJMarshall, Misty Knight-Finley (@mkfin7), Mohammed Hamdy (@mmhamdy), Maxim Nazarov (@mnazarov), Maria Paula Caldas (@mpaulacaldas), Mustafa Ascha (@mustafaascha), Nelson Areal (@nareal), Nate Olson (@nate-d-olson), Nathanael (@nateaff), @nattalides, Ned Western (@NedJWestern), Nick Clark (@nickclark1000), @nickelas, Nirmal Patel (@nirmalpatel), Nischal Shrestha (@nischalshrestha), Nicholas Tierney (@njtierney), Jakub Nowosad (@Nowosad), Nick Pullen (@nstjhp), @olivier6088, Olivier Cailloux (@oliviercailloux), Robin Penfold (@p0bs), Pablo E. Garcia (@pabloedug), Paul Adamson (@padamson), Penelope Y (@penelopeysm), Peter Hurford (@peterhurford), Peter Baumgartner (@petzi53), Patrick Kennedy (@pkq), Pooya Taherkhani (@pooyataher), Y. Yu (@PursuitOfDataScience), Radu Grosu (@radugrosu), Ranae Dietzel (@Ranae), Ralph Straumann (@rastrau), Rayna M Harris (@raynamharris), @ReeceGoding, Robin Gertenbach (@rgertenbach), Jajo (@RIngyao), Riva Quiroga (@rivaquiroga), Richard Knight (@RJHKnight), Richard Zijdeman (@rlzijdeman), @robertchu03, Robin Kohrs (@RobinKohrs), Robin (@Robinlovelace), Emily Robinson (@robinsones), Rob Tenorio (@robtenorio), Rod Mazloomi (@RodAli), Rohan Alexander (@RohanAlexander), Romero Morais (@RomeroBarata), Albert Y. Kim (@rudeboybert), Saghir (@saghirb), Hojjat Salmasian (@salmasian), Jonas (@sauercrowd), Vebash Naidoo (@sciencificity), Seamus McKinsey (@seamus-mckinsey), @seanpwilliams, Luke Smith (@seasmith), Matthew Sedaghatfar (@sedaghatfar), Sebastian Kraus (@sekR4), Sam Firke (@sfirke), Shannon Ellis (@ShanEllis), @shoili, Christian Heinrich (@Shurakai), S'busiso Mkhondwane (@sibusiso16), SM Raiyyan (@sm-raiyyan), Jakob Krigovsky (@sonicdoe), Stephan Koenig (@stephan-koenig), Stephen Balogun (@stephenbalogun), Steven M. Mortimer (@StevenMMortimer), Stéphane Guillou (@stragu), Sulgi Kim (@sulgik), Sergiusz Bleja (@svenski), Tal Galili (@talgalili), Alec Fisher (@Taurenamo), Todd Gerarden (@tgerarden), Tom Godfrey (@thomasggodfrey), Tim Broderick (@timbroderick), Tim Waterhouse (@timwaterhouse), TJ Mahr (@tjmahr), Thomas Klebel (@tklebel), Tom Prior (@tomjamesprior), Terence Teo (@tteo), @twgardner2, Ulrik Lyngs (@ulyngs), Shinya Uryu (@uribo), Martin Van der Linden (@vanderlindenma), Walter Somerville (@waltersom), @werkstattcodes, Will Beasley (@wibeasley), Yihui Xie (@yihui), Yiming (Paul) Li (@yimingli), @yingxingwu, Hiroaki Yutani (@yutannihilation), Yu Yu Aung (@yuyu-aung), Zach Bogart (@zachbogart), @zeal626 y Zeki Akyol (@zekiakyol).

Edición en línea

Hay una versión en línea de este libro disponible en el repositorio GitHub del libro. Seguirá evolucionando entre las reimpresiones del libro físico. El código fuente del libro está disponible en https://oreil.ly/Q8z_O. El libro funciona con Quarto, que facilita la escritura de libros que combinan texto y código ejecutable.

1 Si quieres una visión general de todas las funciones de RStudio, consulta la Guía del usuario de RStudio.

Get R para la Ciencia de Datos, 2ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.