Capítulo 3 Leer Datos
En este capítulo vamos a focalizarnos en las diversas formas de entrar datos a R.
3.1 Datasets de base
R contiene datasets que pueden ser utilizados directamente. Para dar un vistazo a los paquetes
paquetes <- library(help = "datasets")
head(paquetes$info[[2]])
## [1] "AirPassengers Monthly Airline Passenger Numbers 1949-1960"
## [2] "BJsales Sales Data with Leading Indicator"
## [3] "BOD Biochemical Oxygen Demand"
## [4] "CO2 Carbon Dioxide Uptake in Grass Plants"
## [5] "ChickWeight Weight versus age of chicks on different diets"
## [6] "DNase Elisa assay of DNase"
Para ver la lista completa con toda la información, entrar paquetes
en la consola nos abrirá una ventana. Utilizar datos que vienen con la instalación R nos facilitará avanzar hacia modelado y comunicación. Por ejemplo, en muchas ocasiones utilizaremos el dataset iris
, que contiene información sobre la longitud de pétalos y sépalos en tres plantas distintas.
Si bien importar datos es crucial, recomiendo que los usuarios menos experimentados continuen con el siguiente capítulo.
A continuación se darán detalles más específicos para importar datos a R.
3.2 Importar datos de manera manual
Rstudio posee una pestaña en donde tenemos el Entorno y un botón que nos permite importar datasets (ver figura). Desaconsejo utilizar esta pestaña de manera recurrente debido a que es de poca utilidad para leer archivos grandes. Además, aprender a importar archivos usando código nos permite leer múltiples archivos con gran velocidad, tarea prácticamente imposible si utilizamos los cuadros de diálogo.
Luego recibiremos la posibilidad de seleccionar el archivo y modificar parámetros en sendos cuadros de diálogo.
3.3 Archivos de texto
La gran ventaja de mantener archivos de texto (por ejemplo, .csv
o .txt
) es que una enorme cantidad de software es capaz de leerlos y no están ligados a un sistema operativo. Estos archivos son normalmente livianos y es fácil mantenerlos como sólo lectura, es decir, archivos en los que no cambiamos la información, sólo accedemos a ella. Si nuestros datos están guardados en un archivo de texto de sólo lectura, es menos probable que ocurra corrupción de datos o que, con el paso del tiempo, los mismos no puedan abrirse porque el software se ha discontinuado.
R tiene funciones genéricas para abrir este tipo de archivos en una tabla como read.table(...)
. Esta función presume pocas cosas en la estructura de datos, por lo que permite especificar un montón de parámetros y nos brinda variabilidad (ver help(read.table)
). Sin embargo, en general conocemos la estructura de nuestros datos (por ejemplo, la primera fila es el título de las columnas o es un archivo separado por comas). Por lo tanto, usaremos llamadas del estilo:
datos <- read.csv(file = 'nombre_de_archivo.csv')
Es común que las computadoras en español utilicen el separador ;
en vez de ,
para archivos .csv
. En ese caso, podemos especificar:
datos <- read.csv(file = 'nombre_de_archivo.csv', sep = ';')
Un archivo separado por tabulaciones (.txt
) puede leerse como:
datos <- read.table(file = 'nombre_de_archivo.txt', sep = '\t')
3.3.1 Importar múltiples archivos de texto
Normalmente tendremos múltiples archivos de texto, probablemente llamados de manera seriada en una carpeta dentro de nuestro working directory (por ejemplo, tendremos resultados/sujeto001.csv
, resultados/sujeto002.csv
, … resultados/sujeto154.csv
).
# Obtener lista de archivos dentro de la carpeta 'resultados'
lista_nombres <- list.files(path = 'resultados')
# leer todos los archivos en una nueva lista
lista_archivos <- lapply(lista_nombres, read.csv())
Esta estrategia nos ahorra tener que escribir 154 llamadas a read.csv()
con el nombre de archivo correcto. También facilita el acceso a todas las tablas en un único objeto, la lista lista_archivos
.
3.4 Otros formatos
3.4.1 Desde la web
Es posible utilizar una URL para leer datos. Es necesario conocer la dirección directa al archivo de texto y su extensión.
datos <- read.table("http://www.algunapagina.com/datos/nombre-archivo.txt")
3.4.2 SAS
Si jugaron con los cuadros de diálogo para importar datos de forma manual, probablemente se toparon con el paquete haven
, por ejemplo podemos leer desde SAS usando:
library(haven)
dataset <- read_sas(...)
También es posible usar foreign
y la función read.ssd()
.
3.4.3 SPSS
R puede leer datos directamente de spss:
- El paquete
foreign
contiene la funciónread.spss()
. - El paquete
haven
y la funciónread_spss()
.
3.4.4 Excel
En algún momento tendremos que leer datos en la forma .xls
o .xlsx
. Existen distintos paquetes que permiten realizar la tarea, por ejemplo:
readxl
contiene la funciónread_excel()
, entre otras.xlsx
contiene la funciónread.xlsx()
, entre otras.