9  Manipulación de datos en R

Instructora: Evelia Coss

Carguemos los paquetes

Código
library(palmerpenguins)
library(dplyr)
library(DT)
ImportanteNota 1

En R y en Bash existe el comando head, que permite visualizar los primeros elementos de un objeto o archivo.
- En R: head(mi_vector) muestra los primeros valores de un vector o data frame.
- En Bash: head archivo.txt muestra las primeras líneas de un archivo de texto.
Esto es útil para inspeccionar rápidamente datos sin necesidad de abrir todo el contenido.

ImportanteNota 2

En R (con dplyr) usamos el operador pipe %>% para encadenar funciones, cumple una función muy similar al pipe | en Bash.

Ambos operadores permiten construir flujos de trabajo claros y reproducibles.

En RStudio, pipe %>% se inserta rápido con:

  • Windows/Linux: Ctrl + Shift + M
  • iOS / Mac: Cmd + Shift + M
ImportanteNota 3

En R podemos usar :: para indicar que una función proviene de un paquete específico.
- Ejemplo: dplyr::select() llama directamente a la función select del paquete dplyr.
- Esto evita conflictos cuando diferentes paquetes tienen funciones con el mismo nombre.
- Podemos cargar un paquete completo con library(dplyr) o usar solo una función con dplyr::función.

La manera correcta para evitar ambigüedades es usar siempre paquete::función cuando hay riesgo de conflicto.

TipTip

En este curso trabajaremos principalmente con dplyr y el operador %>%, ya que ofrece una sintaxis clara y didáctica para manipular data frames y tibbles.

Sin embargo, es importante saber que para datasets muy grandes existe el paquete data.table, que está optimizado para velocidad y eficiencia en memoria.

Imagen creada con Gemini.

9.1 Paquete palmerpenguins

El objetivo de palmerpenguins es proporcionar un gran conjunto de datos para la exploración y visualización de datos, como alternativa a iris.

9.2 Acerca de los datos

Los datos fueron recopilados y puestos a disposición por la Dra. Kristen Gorman y la Estación Palmer, Antártida LTER , miembro de la Red de Investigación Ecológica a Largo Plazo.

Especies que encontraremos en el paquete de datos de palmerpenguins:

Imagen creada con Gemini. Especies encontradas en el dataset: Adelia (Adélie), Papúa (Gentoo) y Barbijo (Chinstrap).

9.3 Medidas de tamaño de pingüinos adultos en busca de alimento cerca de la Estación Palmer, Antártida

Una de ellas se llama penguins, y es una versión simplificada de los datos brutos; consulte ?penguinspara obtener más información:

Código
head(penguins) %>% 
  DT::datatable(rownames = FALSE)
  • species / especies: un factor que indica la especie de pingüino (Adelia, Barbijo y Gentoo)
  • island / isla: un factor que denota una isla en el archipiélago Palmer, Antártida (Biscoe, Dream o Torgersen)
  • bill_length_mm / longitud del pico en mm: un número que indica la longitud del pico (en milímetros)
  • bill_depth_mm / grosor del pico en mm: un número que indica la grosor del pico (milímetros)
  • flipper_length_mm / longitud de la aleta en mm: un número entero que indica la longitud de la aleta (en milímetros)
  • body_mass_g / masa corporal en gramos: un número entero que indica la masa corporal (gramos)
  • sex / sexo: un factor que indica el sexo del pingüino (hembra, macho)
  • year / año del estudio: un número entero que indica el año del estudio (2007, 2008 o 2009)

Información tomada de la página principal de palmerpenguins.

9.4 Tamaño, puesta y datos de isótopos sanguíneos de pingüinos adultos en busca de alimento cerca de la Estación Palmer, Antártida

El segundo conjunto de datos es penguins_raw, y contiene todas las variables y los nombres originales tal como se descargaron; consulte ?penguins_rawpara obtener más información.

Código
head(penguins_raw, 4) %>% 
  DT::datatable(rownames = FALSE)
  • studyName /nombre del estudio : Expedición de muestreo a partir de la cual se recopilaron, generaron, etc., datos.
  • Sample Number / Número de muestra un número entero que denota la secuencia de numeración continua para cada muestra.
  • Species/ Especies: una cadena de caracteres que denota la especie de pingüino.
  • Region/ Región: una cadena de caracteres que indica la región de la cuadrícula de muestreo de Palmer LTER.
  • Island / Isla: una cadena de caracteres que indica la isla cercana a la estación Palmer donde se recolectaron las muestras
  • Stage / Escenario: una cadena de caracteres que indica la etapa reproductiva en el momento de la toma de muestras
  • Individual ID / Identificación individual: una cadena de caracteres que indica el ID único de cada individuo en el conjunto de datos.
  • Clutch Completion / Finalización del embrague: una cadena de caracteres que indica si el nido estudiado se observó con una nidada completa, es decir, 2 huevos.
  • Date Egg / Fecha de muestreo del huevo: una fecha que indica la fecha en que se observó el nido estudiado con 1 huevo (muestreado).
  • Culmen Length / Longitud de la cresta dorsal: un número que indica la longitud de la cresta dorsal del pico de un ave (en milímetros)
  • Culmen Depth / Profundidad del culmen: un número que indica la profundidad de la cresta dorsal del pico de un ave (en milímetros)
  • Flipper Length/ Longitud de la aleta: un número entero que indica la longitud de la aleta del pingüino (en milímetros)
  • Body Mass/ Masa corporal: un número entero que indica la masa corporal del pingüino (en gramos)
  • Sex / Sexo: una cadena de caracteres que indica el sexo de un animal
  • Delta 15 N: un número que indica la medida de la proporción de isótopos estables 15N:14N
  • Delta 13 C: un número que indica la medida de la proporción de isótopos estables 13C:12C
  • Comments/ Comentarios: una cadena de caracteres con texto que proporciona información adicional relevante para los datos.

9.5 Revisar las dimensiones de un objeto

Función Descripción Ejemplo
length() Devuelve el número de elementos de un vector o lista. length(1:10) → 10
dim() Devuelve las dimensiones (filas, columnas) de matrices y data frames. dim(penguins) → 344 8
nrow() Número de filas de un objeto tipo data frame o matriz. nrow(penguins) → 344
ncol() Número de columnas de un objeto tipo data frame o matriz. ncol(penguins) → 8
str() Muestra la estructura del objeto, incluyendo dimensiones y tipo de datos. str(penguins)

Ambos conjuntos de datos contienen información sobre 344 pingüinos. Estos conjuntos de datos incluyen 3 especies diferentes de pingüinos, recopiladas en 3 islas del archipiélago Palmer, en la Antártida. Vamos a revisar la estructura de los datos:

Código
str(penguins)
tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
 $ species          : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ island           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ bill_length_mm   : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
 $ bill_depth_mm    : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
 $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
 $ body_mass_g      : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
 $ sex              : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
 $ year             : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
Tip¿Qué significa?
  • tibble → Es una versión moderna del data frame, creada por el paquete tibble/dplyr.

  • [344 × 8] → Son las dimensiones del objeto:

    • 344 filas → cada fila representa una observación o registro.

    • 8 columnas → cada columna representa una variable o atributo.