Data frame en R

¿Quieres aprender todo sobre data frames en R? Este es un tutorial completo de esta estructura de datos de R. Al final de este tutorial, podrás comprender todos los conceptos básicos para trabajar con un data frame en R, tales como acceder a los datos, añadir nuevas filas o columnas, así como filtrar o crear subconjuntos de los datos.
¿Qué es un data frame en R?
Los data frames (marcos de datos) son el objeto más habitual para almacenar datos en R. En este tipo de objeto, cada individuo o fecha corresponde a una fila y cada columna corresponde a una variable. Dentro de este tipo de estructura puedes almacenar diferentes tipos de datos.
¿Data frame o matriz?
Una cuestión habitual es preguntarse en qué casos debes usar un data frame o una matriz en R. Los data frames son estructuras de datos muy similares a las matrices, pero en el caso de los data frames puedes tener diferentes tipos de datos dentro de las columnas. En consecuencia, la diferencia es que las matrices almacenan tipos de datos homogéneos mientras que los data frames almacenan tipos de datos heterogéneos. Como ejemplo, supón que tienes los siguientes datos:
Puedes almacenar esas variables como matriz utilizando la función cbind
:
Si imprimes la nueva variable obtendrás el siguiente resultado:
Sin embargo, puedes notar que el resultado no es satisfactorio, ya que todas las variables se han transformado a la clase caracter. En cambio, si usas la función data.frame
, mantendrás el tipo original de las variables.
Los data frames, a diferencia de las matrices, pueden almacenar diferentes tipos de objetos.
¿Cómo crear un data frame en R?
En R es muy sencillo crear un nuevo data frame. Puedes unir tus variables haciendo uso de la función data.frame
para convertir tus datos a la estructura de datos de tipo data frame. Primero, necesitas tener algunas variables almacenadas para crear el marco de datos en R. En este ejemplo vamos a definir algunas variables de datos meteorológicos. Ten en cuenta que todos los vectores tienen la misma longitud.
Para unir los datos puedes usar la función data.frame
. En este ejemplo, vamos a almacenar el data frame en una variable llamada datos
:
Primero, es habitual mostrar los primeros valores para hacer algunas comprobaciones. Para ello, puedes hacer uso de la función head
en R, que por defecto mostrará las 6 primeras filas del data frame.
En segundo lugar, puedes utilizar la función summary
que devolverá un resumen estadístico de las variables (columnas) del conjunto de datos.
También puedes hacer uso de los data frames de ejemplo que R proporciona. Para buscarlos, puedes llamar a la función data
:
Una vez ejecutado, se abrirá una ventana con una lista de conjuntos de datos disponibles:
Ahora puedes cargar el que quieras con:
Como ejemplo, si quieres cargar el conjunto de datos AirPassengers
en el espacio de trabajo puedes escribir lo siguiente:
Crear un data frame vacío en R
En ocasiones puede resultar interesante inicializar un data frame vacío y rellenarlo dentro de un bucle o añadir las filas mediante algún procedimiento. En este caso, la forma más recomendada de crear una estructura de datos vacía es utilizando la función data.frame
y creando variables vacías. Sin embargo, en el siguiente bloque de código mostraremos esta manera y varias alternativas más.
Accediendo a los datos del data frame
Hay varias formas de acceder a las columnas almacenadas en los data frames:
- Usando el signo del dollar ($) y el nombre de la columna.
- Usando corchetes con el índice de la columna después de una coma.
Como ejemplo, si quieres seleccionar la columna mes
del data frame que creamos antes, ejecuta lo siguiente:
También puedes seleccionar varias variables a la vez. Para ello puedes:
- Crear una secuencia de índices.
-
Crear un vector con la función
c
con los nombres de las variables o índices que quieras seleccionar.
Del mismo modo, puedes acceder a filas del data frame con datos[1, ]
o datos[1:2, ]
para seleccionar la primera fila o la primera y la segunda, o seleccionar solo algunos puntos de datos seleccionando filas y columnas a la vez:
Acceso directo utilizando la función attach
Si no quieres escribir el nombre del data frame una y otra vez, simplemente puedes hacer un uso directo de las variables si pasas el nombre del data frame a la función attach
:
Si quieres deshabilitar el acceso directo, solo tienes que usar la función detach
:
Añadir columnas y filas a un data frame
A veces necesitas modificar los datos para agregar nuevas filas o columnas, o eliminarlas. Para los siguientes ejemplos, utilizaremos el conjunto de datos cars
, registrado en la década de 1920, que forma parte de los conjuntos de datos de ejemplo de R. Puedes cargarlo ejecutando data(cars)
. La base de datos contiene 50 filas y 2 variables:
- speed: velocidad (mph).
- dist: distancia de frenado (ft).
Si ejecutas head(cars)
obtendrás el siguiente resultado:
Supón que quieres crear una nueva variable para transformar la velocidad en kilómetros por hora (km/h) y la distancia en metros. Recuerda que:
kilómetro = milla/0.62137 y metro = pie/3.2808
Entonces, ahora podrías agregar dos nuevas columnas llamadas kph
(kilómetros por hora) y meters
(metros) con el siguiente código:
También puedes hacer uso de la función cbind
. En caso de que quisieses agregar una nueva fila, podrías usar la función rbind
.
Resultando en:
Agrega nuevas filas con la función rbind
y nuevas columnas con la función cbind
.
Eliminar columnas y filas de un data frame
Ahora, si quieres borrar variables o filas de un data frame, tienes varias opciones:
- Usar el signo menos (-) e indicar las columnas o filas que quieras borrar.
- Crear un subconjunto de los datos que quieras conservar.
Como ejemplo, borraremos las variables speed
y dist
y para evitar sobrescribir el conjunto de datos original guardaremos nuestros resultados en un nuevo data frame llamado cars2
.
Si vuelves a utilizar la función head
, podrás ver el nuevo data frame.
Ordenando y filtrando datos de un data frame en R
Es habitual ordenar o filtrar los datos dentro de los data frames por los valores de alguna variable.
Ordenar data frames
Considera, como ilustración, el conjunto de datos mtcars
y cárgalos ejecutando data(mtcars)
. Podemos acceder al índice de ordenación de cualquier variable con la función order
.
El vector de índices de ordenación establece el orden en que tienen que ser elegidas las filas del data frame para obtener la ordenación deseada.
También puedes ordenar de mayor a menor haciendo uso del signo menos.
Además, puedes establecer diferentes condiciones para ordenar los datos. Puedes ordenar por alguna variable y, en caso de empate, ordenar por otra. En el siguiente ejemplo ordenaremos el data frame por la variable llamada cyl
y luego por la variable hp
.
Filtrar data frames
Filtrar un data frame consiste en obtener una submuestra que cumpla con algunas condiciones. Para este propósito, puedes usar la función subset
para crear subconjuntos según los valores de alguna columna. Proporcionaremos algunos ejemplos basados en el conjunto de datos mtcars
:
Subconjunto donde el número de cilindros del automóvil es exactamente 6 y la potencia en caballos es mayor que 115.
Lo mismo que en el ejemplo anterior, pero solo mostramos las variables mpg
, cyl
y disp
utilizando el argumento select
.
Ahora en lugar de utilizar la condición AND usaremos la condición OR. En este caso seleccionaremos los coches donde la variable wt
es menor que 2 o la variable hp
es mayor a 115.