Sobre los Pingüinos de Palmer

Es hora de presentar el conjunto de datos que estamos utilizando. Los datos de Pingüinos de Palmer fueron recogidos y puestos a disposición por la Dra. Kristen Gorman y la Estación Palmer en la Antártida, LTER, que es parte de la Red de Investigación Ecológica a Largo Plazo. El conjunto de datos incluye varias características de los pingüinos Adelia, Barbijo y Papúa. Puedes leer más sobre ello en la documentación de palmerpenguins.

Estos datos están disponibles en R instalando el paquete palmerpenguins (en inglés) o el paquete datos (en español), pero como queremos aprender a leer datos en R, vamos a leerlos desde archivos csv y xls.

Leyendo archivos csv

Empezaremos cargando el paquete tidyverse, que nos da acceso a docenas de paquetes y funciones con las que trabajar. Por ahora usaremos la función read_csv() para leer un archivo .csv que está almacenado en el directorio de datos.

library(tidyverse)
## ── Attaching core tidyverse packages ─────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ 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
pinguinos <- read_csv("datos/pinguinos.csv")
## Rows: 344 Columns: 8
## ── Column specification ───────────────────────────────────────
## Delimiter: ","
## chr (3): especie, isla, sexo
## dbl (5): largo_pico_mm, alto_pico_mm, largo_aleta_mm, masa_corporal_g, anio
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

En Excel o Google Sheets, los datos se almacenan en la hoja de cálculo y se organizan en celdas. En R, se almacenan en objetos. Cuando leemos un archivo csv, los datos van directo a un data.frame llamado pinguinos y están listos para ser utilizados. En la solapa “Environment” podemos ver el objeto pinguinos, y si hacemos clic en ese objeto los datos se abrirán en una nueva pestaña para que veamos que pinta tiene.

La pestaña de visualización del data.frame con los datos de pinguinos luego de llamar a la función View()

Esta previsualización es lo más parecida a la que tenemos en una hoja de cálculo. Podemos llegar a este panel ejecutando View(pinguinos) en la consola (Importante: R distingue mayúsculas de minísculas!). Hay otras funciones que nos sirven para visualizar nuestros datos. Vamos a utilizar una de ellas:

glimpse(pinguinos)
## Rows: 344
## Columns: 8
## $ especie         <chr> "Adelia", "Adelia", "Adelia", "Adelia", "Adelia", "Ade…
## $ isla            <chr> "Torgersen", "Torgersen", "Torgersen", "Torgersen", "T…
## $ largo_pico_mm   <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, 42…
## $ alto_pico_mm    <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, 20…
## $ largo_aleta_mm  <dbl> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186, …
## $ masa_corporal_g <dbl> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, 42…
## $ sexo            <chr> "macho", "hembra", "hembra", NA, "hembra", "macho", "h…
## $ anio            <dbl> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, …

Esta salida es diferente y nos da información sobre el tipo de datos en cada columna (o variable).

A veces nuestros datos no son tan amigables y necesitamos dar más información a la función para poder leer los datos correctamente. Puedes encontrar estas opciones buscando en la documentación de la función.

Escribe ?read_csv() en la consola y revisa la documentación. ¿Cómo se llama la opción para cambiar el delimitador por defecto?

Leyendo archivos xlsx

¿Cómo podemos trabajar con archivos xlsx? Necesitaremos otro paquete de R, readxl que ya está instalado en el proyecto RStudio Cloud, solo necesitamos cargar la librería. En este caso la función se llama read_excel().

library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
penguinos_xls <- read_excel("datos/pinguinos.xlsx")

Y listo, hemos leído un archivo xlsx. Por supuesto, a veces tenemos que trabajar con archivos con múltiples hojas o con datos que no están muy organizados. Esta función viene con varias opciones o argumentos para leer hojas específicas (sheet = <nombre de la hoja>) o un rango específico (range = “C1:E7”`) y otros.

Ahora que tenemos los datos leídos en R, es el momento de analizar esos datos.

LS0tDQp0aXRsZTogIkxleWVuZG8gZGF0b3MiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IGZhbHNlDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMjIFNvYnJlIGxvcyBQaW5nw7xpbm9zIGRlIFBhbG1lcg0KDQpFcyBob3JhIGRlIHByZXNlbnRhciBlbCBjb25qdW50byBkZSBkYXRvcyBxdWUgZXN0YW1vcyB1dGlsaXphbmRvLiBMb3MgZGF0b3MgZGUgKipQaW5nw7xpbm9zIGRlIFBhbG1lcioqIGZ1ZXJvbiByZWNvZ2lkb3MgeSBwdWVzdG9zIGEgZGlzcG9zaWNpw7NuIHBvciBsYSBEcmEuIEtyaXN0ZW4gR29ybWFuIHkgbGEgW0VzdGFjacOzbiBQYWxtZXIgZW4gbGEgQW50w6FydGlkYSwgTFRFUl0oaHR0cHM6Ly9wYWwubHRlcm5ldC5lZHUvKSwgcXVlIGVzIHBhcnRlIGRlIGxhIFJlZCBkZSBJbnZlc3RpZ2FjacOzbiBFY29sw7NnaWNhIGEgTGFyZ28gUGxhem8uIEVsIGNvbmp1bnRvIGRlIGRhdG9zIGluY2x1eWUgdmFyaWFzIGNhcmFjdGVyw61zdGljYXMgZGUgbG9zIHBpbmfDvGlub3MgQWRlbGlhLCBCYXJiaWpvIHkgUGFww7phLiBQdWVkZXMgbGVlciBtw6FzIHNvYnJlIGVsbG8gZW4gbGEgW2RvY3VtZW50YWNpw7NuIGRlIHBhbG1lcnBlbmd1aW5zXShodHRwczovL2FsbGlzb25ob3JzdC5naXRodWIuaW8vcGFsbWVycGVuZ3VpbnMvKS4gDQoNCkVzdG9zIGRhdG9zIGVzdMOhbiBkaXNwb25pYmxlcyBlbiBSIGluc3RhbGFuZG8gZWwgcGFxdWV0ZSBwYWxtZXJwZW5ndWlucyAoZW4gaW5nbMOpcykgbyBlbCBwYXF1ZXRlIGRhdG9zIChlbiBlc3Bhw7FvbCksIHBlcm8gY29tbyBxdWVyZW1vcyBhcHJlbmRlciBhIGxlZXIgZGF0b3MgZW4gUiwgdmFtb3MgYSBsZWVybG9zIGRlc2RlIGFyY2hpdm9zIGNzdiB5IHhscy4NCg0KIyMgTGV5ZW5kbyBhcmNoaXZvcyBjc3YNCg0KRW1wZXphcmVtb3MgY2FyZ2FuZG8gZWwgcGFxdWV0ZSAqKnRpZHl2ZXJzZSoqLCBxdWUgbm9zIGRhIGFjY2VzbyBhIGRvY2VuYXMgZGUgcGFxdWV0ZXMgeSBmdW5jaW9uZXMgY29uIGxhcyBxdWUgdHJhYmFqYXIuIFBvciBhaG9yYSB1c2FyZW1vcyBsYSBmdW5jacOzbiBgcmVhZF9jc3YoKWAgcGFyYSBsZWVyIHVuIGFyY2hpdm8gLmNzdiBxdWUgZXN0w6EgYWxtYWNlbmFkbyBlbiBlbCBkaXJlY3RvcmlvIGRlIGRhdG9zLiANCg0KYGBge3Igd2FybmluZz1GQUxTRX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQpwaW5ndWlub3MgPC0gcmVhZF9jc3YoImRhdG9zL3Bpbmd1aW5vcy5jc3YiKQ0KYGBgDQoNCkVuIEV4Y2VsIG8gR29vZ2xlIFNoZWV0cywgbG9zIGRhdG9zIHNlIGFsbWFjZW5hbiBlbiBsYSBob2phIGRlIGPDoWxjdWxvIHkgc2Ugb3JnYW5pemFuIGVuIGNlbGRhcy4gRW4gUiwgc2UgYWxtYWNlbmFuIGVuIG9iamV0b3MuIEN1YW5kbyBsZWVtb3MgdW4gYXJjaGl2byBjc3YsIGxvcyBkYXRvcyB2YW4gZGlyZWN0byBhIHVuIGRhdGEuZnJhbWUgbGxhbWFkbyBgcGluZ3Vpbm9zYCB5IGVzdMOhbiBsaXN0b3MgcGFyYSBzZXIgdXRpbGl6YWRvcy4gRW4gbGEgc29sYXBhICJFbnZpcm9ubWVudCIgcG9kZW1vcyB2ZXIgZWwgb2JqZXRvIGBwaW5ndWlub3NgLCB5IHNpIGhhY2Vtb3MgY2xpYyBlbiBlc2Ugb2JqZXRvIGxvcyBkYXRvcyBzZSBhYnJpcsOhbiBlbiB1bmEgbnVldmEgcGVzdGHDsWEgcGFyYSBxdWUgdmVhbW9zIHF1ZSBwaW50YSB0aWVuZS4gDQoNCg0KPGltZyBzcmM9ImltZy92aWV3X2VuX3JzdHVkaW8ucG5nIiBhbHQ9IkxhIHBlc3Rhw7FhIGRlIHZpc3VhbGl6YWNpw7NuIGRlbCBkYXRhLmZyYW1lIGNvbiBsb3MgZGF0b3MgZGUgcGluZ3Vpbm9zIGx1ZWdvIGRlIGxsYW1hciBhIGxhIGZ1bmNpw7NuIFZpZXcoKSIgLz4NCg0KRXN0YSBwcmV2aXN1YWxpemFjacOzbiBlcyBsbyBtw6FzIHBhcmVjaWRhIGEgbGEgcXVlIHRlbmVtb3MgZW4gdW5hIGhvamEgZGUgY8OhbGN1bG8uIFBvZGVtb3MgbGxlZ2FyIGEgZXN0ZSBwYW5lbCBlamVjdXRhbmRvIGBWaWV3KHBpbmd1aW5vcylgIGVuIGxhIGNvbnNvbGEgKEltcG9ydGFudGU6IFIgZGlzdGluZ3VlIG1hecO6c2N1bGFzIGRlIG1pbsOtc2N1bGFzISkuIEhheSBvdHJhcyBmdW5jaW9uZXMgcXVlIG5vcyBzaXJ2ZW4gcGFyYSB2aXN1YWxpemFyIG51ZXN0cm9zIGRhdG9zLiAgVmFtb3MgYSB1dGlsaXphciB1bmEgZGUgZWxsYXM6DQoNCmBgYHtyfQ0KZ2xpbXBzZShwaW5ndWlub3MpDQpgYGANCg0KRXN0YSBzYWxpZGEgZXMgZGlmZXJlbnRlIHkgbm9zIGRhIGluZm9ybWFjacOzbiBzb2JyZSBlbCB0aXBvIGRlIGRhdG9zIGVuIGNhZGEgY29sdW1uYSAobyB2YXJpYWJsZSkuDQoNCkEgdmVjZXMgbnVlc3Ryb3MgZGF0b3Mgbm8gc29uIHRhbiBhbWlnYWJsZXMgeSBuZWNlc2l0YW1vcyBkYXIgbcOhcyBpbmZvcm1hY2nDs24gYSBsYSBmdW5jacOzbiBwYXJhIHBvZGVyIGxlZXIgbG9zIGRhdG9zIGNvcnJlY3RhbWVudGUuIFB1ZWRlcyBlbmNvbnRyYXIgZXN0YXMgb3BjaW9uZXMgYnVzY2FuZG8gZW4gbGEgZG9jdW1lbnRhY2nDs24gZGUgbGEgZnVuY2nDs24uIA0KDQo+IEVzY3JpYmUgYD9yZWFkX2NzdigpYCBlbiBsYSBjb25zb2xhIHkgcmV2aXNhIGxhIGRvY3VtZW50YWNpw7NuLiDCv0PDs21vIHNlIGxsYW1hIGxhIG9wY2nDs24gcGFyYSBjYW1iaWFyIGVsIGRlbGltaXRhZG9yIHBvciBkZWZlY3RvPw0KDQojIyBMZXllbmRvIGFyY2hpdm9zIHhsc3gNCg0Kwr9Dw7NtbyBwb2RlbW9zIHRyYWJhamFyIGNvbiBhcmNoaXZvcyB4bHN4PyBOZWNlc2l0YXJlbW9zIG90cm8gcGFxdWV0ZSBkZSBSLCAqKnJlYWR4bCoqIHF1ZSB5YSBlc3TDoSBpbnN0YWxhZG8gZW4gZWwgcHJveWVjdG8gUlN0dWRpbyBDbG91ZCwgc29sbyBuZWNlc2l0YW1vcyBjYXJnYXIgbGEgbGlicmVyw61hLiBFbiBlc3RlIGNhc28gbGEgZnVuY2nDs24gc2UgbGxhbWEgYHJlYWRfZXhjZWwoKWAuDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkeGwpDQoNCnBlbmd1aW5vc194bHMgPC0gcmVhZF9leGNlbCgiZGF0b3MvcGluZ3Vpbm9zLnhsc3giKQ0KYGBgDQoNClkgbGlzdG8sIGhlbW9zIGxlw61kbyB1biBhcmNoaXZvIHhsc3guIFBvciBzdXB1ZXN0bywgYSB2ZWNlcyB0ZW5lbW9zIHF1ZSB0cmFiYWphciBjb24gYXJjaGl2b3MgY29uIG3Dumx0aXBsZXMgaG9qYXMgbyBjb24gZGF0b3MgcXVlIG5vIGVzdMOhbiBtdXkgb3JnYW5pemFkb3MuIEVzdGEgZnVuY2nDs24gdmllbmUgY29uIHZhcmlhcyBvcGNpb25lcyBvIGFyZ3VtZW50b3MgcGFyYSBsZWVyIGhvamFzIGVzcGVjw61maWNhcyAoYHNoZWV0ID0gPG5vbWJyZSBkZSBsYSBob2phPmApIG8gdW4gcmFuZ28gZXNwZWPDrWZpY28gKGByYW5nZWAgPSAiQzE6RTciYCkgeSBvdHJvcy4gDQoNCkFob3JhIHF1ZSB0ZW5lbW9zIGxvcyBkYXRvcyBsZcOtZG9zIGVuIFIsIGVzIGVsIG1vbWVudG8gZGUgYW5hbGl6YXIgZXNvcyBkYXRvcy4gDQoNCg==