Chapter 5 Data Frames

Un Dataframe en R es una estructura de datos rectangular que se compone de renglones y columnas, donde cada columna puede tener un tipo de datos diferente. Los Dataframes son una de las estructuras de datos más utilizadas en R, ya que son la forma estándar de almacenar datos tabulares.

5.1 Crear un Dataframe en R

Podemos crear un DataFrame en R utilizando la función data.frame(). Aquí hay un ejemplo de cómo crear un DataFrame simple con datos de estudiantes:

# Crear un DataFrame de estudiantes
estudiantes <- data.frame(
  nombre = c("Juan", "María", "Pedro", "Laura"),
  edad = c(20, 22, 21, 23),
  puntaje = c(85, 90, 88, 92)
)

# Ver el DataFrame
print(estudiantes)
##   nombre edad puntaje
## 1   Juan   20      85
## 2  María   22      90
## 3  Pedro   21      88
## 4  Laura   23      92

Para crear un Dataframe en R, puedes utilizar la función data.frame(). Por ejemplo, para crear un Dataframe con información del genoma de algunos microorganismos, podrías escribir lo siguiente:

dna_data <- data.frame(
  secuencia = c("ATCGATCG", "GCTAGCTA", "TTAAGGCT"),
  tamaño = c(8, 8, 8),
  contenido_GC = c(0.5, 0.4, 0.3)
)

print(dna_data)
##   secuencia tamaño contenido_GC
## 1  ATCGATCG      8          0.5
## 2  GCTAGCTA      8          0.4
## 3  TTAAGGCT      8          0.3

NOTA También puedes emplear View() para visualizar el DataFrame.

View(dna_data)

En este ejemplo, el dataframe tiene tres columnas: “secuencia”, “tamaño” y “contenido_GC”. La columna “secuencia” contiene cadenas de caracteres (strings) que representan las bases del ADN, mientras que las otras dos columnas contienen valores numéricos.

5.2 Acceder a los datos de un dataframe

Para seleccionar elementos o acceder a algún dato de un dataframe, se hace de forma análoga a las matrices, es decir, se utiliza el operador de subíndice [].

Por ejemplo, para acceder al segundo renglón de la columna “secuencia” en el Dataframe “dna_data”, se puede escribir lo siguiente:

dna_data[2, "secuencia"]
## [1] "GCTAGCTA"

Esto devolvería la cadena de caracteres “GCTAGCTA”.

También puedes acceder a varios renglones o columnas a la vez. Por ejemplo, para acceder a los primeros dos renglones de las columnas “tamaño” y “contenido_GC” en el Dataframe “dna_data”, podrías escribir lo siguiente:

dna_data[1:2, c("tamaño", "contenido_GC")]
##   tamaño contenido_GC
## 1      8          0.5
## 2      8          0.4

Esto devolvería un dataframe con dos renglones y dos columnas.

5.3 Agregar y eliminar renglones y columnas en un Dataframe en R

Para agregar una nueva columna a un Dataframe en R, puedes utilizar el operador de asignación <-. Por ejemplo, para agregar una columna que represente la Temperatura de Melting (o Fusión) en el Dataframe “dna_data”, podrías escribir lo siguiente:

dna_data$temperatura_melting <- c(24, 24, 20)

Esto crearía una nueva columna llamada “temperatura_melting” en el Dataframe “dna_data” y la inicializaría con los valores proporcionados.

Para eliminar una columna de un Dataframe en R, puedes utilizar el operador de subíndice[] con un valor nulo para la columna que deseas eliminar. Por ejemplo, para eliminar la columna “temperatura_melting” del Dataframe “dna_data”, podrías escribir lo siguiente:

dna_data$temperatura_melting <- NULL

Para agregar un nuevo renglón a un Dataframe en R, puedes utilizar la función rbind(). ¿También se puede aplicar cbind() en Dataframe?

** Ejercicio **

Emplea la siguiente fórmula para calcular la Temperatura de Fusión: \(T_m=4(G+C)+2(A+T)\), diseña una secuencia que cumpla con una \(T_m\) de \(55°\). Agrega sus características (secuencia, tamaño, cantidad GC & T_m) en un nuevo renglón. También será necesario agregar la columna Tm para indicar la Temperatura de Fusión de cada secuencia. Usa el Dataframe dna_data como base.

5.4 Importar archivos externos

Normalmente queremos trabajar con datos generados en excel o en google sheets que vienen de una encuesta, de un experimento etc. R tiene la capacidad de hacer eso con varias funciones y normalmente el resultado es un data.frame

5.4.1 Importar un archivo csv en R

Un archivo csv (Comma Separated Values) es un archivo de texto que contiene datos en formato tabular, donde cada renglón representa un registro y cada columna representa una variable. Para importar un archivo CSV en R, puedes utilizar la función read.csv(). Por ejemplo, si tienes un archivo llamado “ventas.csv” en tu directorio de trabajo actual, puedes importarlo de la siguiente manera:

#ventas <- read.csv("ventas.csv")

Esto creará un dataframe llamado “ventas” en R, que contendrá los datos del archivo CSV.

Si el archivo CSV utiliza un separador de campos diferente a la coma, puedes utilizar la función read.csv2() en su lugar. Por ejemplo, si el archivo CSV utiliza un punto y coma como separador de campos, puedes importarlo de la siguiente manera:

#ventas <- read.csv2("ventas.csv")

5.4.2 Importar un archivo TSV en R

Un archivo TSV (Tab Separated Values) es similar a un archivo CSV, pero utiliza tabulaciones en lugar de comas para separar los campos. Para importar un archivo TSV en R, puedes utilizar la función read.delim(). Por ejemplo, si tienes un archivo llamado “ventas.tsv” en tu directorio de trabajo actual, puedes importarlo de la siguiente manera:

#ventas <- read.delim("ventas.tsv")

Esto creará un Dataframe llamado “ventas” en R, que contendrá los datos del archivo TSV.

Si el archivo TSV utiliza un separador de campos diferente a la tabulación, puedes utilizar la función read.delim2() en su lugar.

5.4.3 Importar un archivo Excel en R

Un archivo de Excel es un formato de archivo popular para almacenar datos en formato tabular. Para importar un archivo de Excel en R, puedes utilizar la función readxl::read_excel() del paquete “readxl”. Por ejemplo, si tienes un archivo llamado “ventas.xlsx” en tu directorio de trabajo actual, puedes importarlo de la siguiente manera:

library(readxl)
#ventas <- read_excel("ventas.xlsx")

5.4.4 Ejercicios

  1. Datos de crecimiento de cultivos bacterianos

Descripción: Supón que tienes un data.frame con datos de crecimiento de cultivos bacterianos en diferentes condiciones.

  • Crea un data.frame crecimiento con las siguientes columnas: Cepa, Medio, TasaCrecimiento, Temperatura.
  • Llena el data.frame con datos aleatorios para 10 cepas en 3 medios diferentes y 4 temperaturas distintas.
  • Encuentra la media y la desviación estándar de la tasa de crecimiento por cada medio.
  1. Perfil de resistencia antibiótica

Descripción: Supón que tienes un data.frame con datos de resistencia antibiótica de diferentes cepas bacterianas.

  • Crea un data.frame resistencia con las columnas: Cepa, Antibiótico, Resistencia (0 para sensible, 1 para resistente).
  • Llena el data.frame con datos aleatorios para 5 cepas y 5 antibióticos diferentes.
  • Calcula el porcentaje de resistencia para cada antibiótico.
  1. Datos de abundancia de secuencias

Descripción: Supón que tienes un data.frame con datos de abundancia de secuencias de diferentes microorganismos en distintas muestras.

  • Crea un data.frame secuencias con las columnas: Muestra, Microorganismo, Abundancia.
  • Llena el data.frame con datos aleatorios para 8 microorganismos en 5 muestras diferentes.
  • Encuentra la abundancia total y promedio por muestra.
  1. Datos de Producción de Ácido Láctico

Descripción: Supón que tienes un data.frame con datos de producción de ácido láctico por diferentes cepas en distintas condiciones.

  • Crea un data.frame fermentacion con las columnas: Cepa, Condición, Producción.
  • Llena el data.frame con datos aleatorios para 7 cepas y 4 condiciones diferentes.
  • Encuentra la cepa que produce la mayor cantidad de ácido láctico en cada condición.