Leer CSV en R

Manipulación de datos con R Importar y exportar datos
Aprende a leer archivos CSV en R o RStudio

Es habitual encontrar conjuntos de datos en formato CSV (valores separados por comas). Este tipo de almacenamiento de datos es una solución ligera para la mayoría de los casos. En este tutorial aprenderás a leer un CSV en R para trabajar con él.

¿Cómo leer un CSV en R?

En esta sección aprenderás a importar datos CSV en R o RStudio con las funciones read.csv y read.csv2. Puedes ver la sintaxis básica de las funciones con los argumentos más comunes en el siguiente bloque de código. Para obtener detalles adicionales, recuerda escribir ?read.csv o ?read.csv2.

# Por defecto coma (,) como separador y punto (.) como separador decimal
read.csv(file,                 # Nombre del archivo o ruta completa del archivo
         header = TRUE,        # Leer el encabezado (TRUE) o no (FALSE)
         sep = ",",            # Separador de los valores
         quote = "\"'",        # Carácter de citaciones
         dec = ".",            # Punto decimal
         fill = TRUE,          # Rellenar celdas vacías (TRUE) o no (FALSE)
         comment.char = "",    # Carácter de los comentarios o cadenas vacías
         encoding = "unknown", # Codificación del archivo
         ...)                  # Argumentos adicionales

# Por defecto punto y coma (;) como separador y coma (,) como separador decimal
read.csv2(file, header = TRUE, sep = ";", quote = """, dec = ",",
          fill = TRUE, comment.char = "", encoding = "unknown", ...)

Es posible que hayas notado que la única diferencia entre las funciones es el separador de valores y el separador decimal, debido a que en algunos países usan comas como separador decimal.

En este segundo caso, para crear archivos CSV se necesita el punto y coma y por tanto, para importar archivos con decimales, es necesario cambiar los argumentos por defecto de la función read.csv, o usar directamente la función read.csv2.

La siguiente tabla resume los tres argumentos predeterminados principales:

Función Header Sep Dec
read.csv TRUE “,” “.”
read.csv2 TRUE “;” “,”

Para cargar un archivo CSV en R con los argumentos predeterminados puedes pasar el archivo como cadena de caracteres a la función correspondiente. La salida será de clase data.frame.

read.csv("mi_archivo.csv")

Si tan solo ejecutas el código anterior imprimirás el data frame, pero no se almacenará en memoria, ya que no lo estás asignado a ninguna variable. Si lo guardas, por ejemplo, en un variable llamada mi_archivo, podrás acceder a las variables o a los datos que quieras.

mi_archivo <- read.csv("mi_archivo.csv")

El archivo debe estar en tu directorio de trabajo. Si no lo está necesitarás especificar la ruta completa del archivo en el argumento file.

Encabezado del archivo CSV

Por defecto, las funciones leen el encabezado de los archivos. En caso de que quieras leer el CSV sin encabezado, deberás configurar como FALSE el argumento header.

read.csv("mi_archivo.csv", header = FALSE)

Codificación del CSV

Un problema común surge con la mala codificación de los archivos. En caso de que estés leyendo un archivo con caracteres raros, tal vez necesites especificar el argumento encoding. Establecer la codificación en UTF-8 tiende a resolver la mayoría de estos problemas.

read.csv("mi_archivo.csv", encoding = "UTF-8")

Ten en cuenta que este argumento y los siguientes se heredan de la función read.table.

El argumento na.strings

En ocasiones los archivos contienen alguna cadena de caracteres que representan los valores faltantes u omitidos. Encontrarás más información sobre cómo se manejan los valores faltantes en la fuente de donde hayas obtenido el conjunto de datos. Para resolver este problema, puedes convertirlos a valores NA con el argumento na.strings, especificando la cadena de caracteres que representa el valor faltante.

Si, por ejemplo, en nuestro archivo los valores -9999 representan valor omitidos o faltantes podemos escribir:

read.csv("mi_archivo.csv", na.strings = "-9999") 

Además, en caso de que el archivo contenga múltiples na.strings, puedes especificar todo dentro de un vector.

read.csv("mi_archivo.csv", na.strings = c("-9999" , "Na" )) 

Sin embargo, si necesitas eliminar los valores NA después de abrir el CSV, deberás usar la función que corresponda según tus datos. La función más habitual es na.omit.

El argumento stringsAsFactors

El argumento stringsAsFactors transformará las columnas de tipo carácter del conjunto de datos en factores.

read.csv("mi_archivo.csv", stringsAsFactos = TRUE) 

Leer múltiples CSV en R

Para finalizar, cabe destacar que es posible importar múltiples archivos CSV al mismo tiempo en lugar de cargarlos en R uno por uno. Para ese propósito, puedes usar la función list.files para buscar todos los archivos CSV y luego leerlos aplicando la función read.csv (o read.csv2) con la función sapply.

archivos <-  list.files(pattern = "*.csv")

multiples_csv <- sapply(archivos, read.csv)