Importar datos en R: leer archivos CSV, Excel, SPSS, Stata, SAS

⚡ Resumen inteligente

La importación de datos en R abarca la lectura de archivos CSV con read.csv(), libros de Excel con readxl y archivos SAS, STATA o SPSS con haven. Este tutorial también muestra cómo seleccionar con precisión hojas, filas y rangos de celdas durante la importación.

  • 📄 Importación CSV: read.csv(file, header = TRUE, sep = “,”) carga un archivo separado por comas desde una ruta local o un URL.
  • ⚠️ Cambio de versión: Desde R 4.0.0, las columnas de caracteres siguen siendo de tipo carácter, porque stringsAsFactors ahora tiene como valor predeterminado FALSE.
  • 📗 Importación de Excel: La función read_excel() de readxl maneja tanto archivos .xls como .xlsx, y la función excel_sheets() lista primero todas las hojas de cálculo.
  • 🎯 Selección precisa: n_max limita las filas, range acepta la notación de Excel y cell_rows() o cell_cols() aceptan índices y letras.
  • 🔄 Otro software: haven proporciona read_sas(), read_dta() y read_sav(), cada uno necesitando solo una ruta o URL.
  • 🧹 Entrada limpia: Codifique los valores faltantes como NA y evite espacios o símbolos en los nombres de las columnas antes de importar.

Importar datos en R

Los datos pueden existir en varios formatos. Para cada formato R tiene una función y un argumento específicos. Este tutorial explica cómo importar datos a R.

Leer archivos CSV

El formato de datos más utilizado es .csv, valores separados por comas. R carga una serie de bibliotecas durante el inicio, incluido el paquete utils. Este paquete proporciona read.csv(), la forma estándar de abrir un archivo CSV. Esta es la sintaxis:

read.csv(file, header = TRUE, sep = ",")

Argumento:

  • listo para importar: RUTA donde se almacena el archivo
  • encabezamiento: confirme si el archivo tiene un encabezado o no, de forma predeterminada, el encabezado está configurado en VERDADERO
  • sep: el símbolo utilizado para dividir la variable. Por defecto, `,`.

Leeremos el nombre del archivo de datos mtcats. El archivo csv se almacena en línea. Si su archivo .csv está almacenado localmente, puede reemplazar la RUTA dentro del fragmento de código. No olvides envolverlo dentro de ' '. La RUTA debe ser un valor de cadena.

Para usuarios de Mac, la ruta de la carpeta de descarga es:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Para usuarios de Windows:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Tenga en cuenta que siempre debemos especificar la extensión del nombre del archivo.

  • . Csv
  • . Xlsx
  • .TXT
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

Salida:

## [1] 12
class(df$X)

Salida:

## [1] "factor"

En versiones de R anteriores a la 4.0.0, read.csv() convertía cada columna de caracteres en un factor, por lo que class(df$X) devuelve "factor" arriba. Puedes desactivar esta conversión con stringsAsFactors = FALSE.

⚠️ Nota de versión: desde R 4.0.0 Por defecto, stringsAsFactors = FALSE, por lo que las columnas de caracteres siguen siendo de tipo carácter y el primer ejemplo ahora devuelve "character" en una instalación moderna. Pasar el argumento explícitamente, como se muestra a continuación, da el mismo resultado en todas las versiones y es la práctica más segura.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

Salida:

## [1] "character"

La clase de la variable X ahora es un carácter.

read.csv() vs read_csv(): ¿Cuál deberías usar?

La función read.csv() viene incluida en R base y no requiere ningún paquete adicional. El paquete readr añade read_csv(), que es más rápida y toma menos decisiones por ti.

Criterios read.csv() (utils) leer_csv() (readr)
Paquete necesario Ninguna lector
Velocidad en archivos grandes Más lento Varias veces más rápido
Returns marco de datos titubear
Nombres de columnas Espacios convertidos en puntos Se mantuvo exactamente como estaba escrito.
Detección de tipos SIlent Informado en una especificación de columna
library(readr)
df <- read_csv(PATH)

# For very large files, data.table::fread() is faster still
library(data.table)
df <- fread(PATH)

Utilice read.csv() para archivos pequeños y scripts que deban ejecutarse sin paquetes adicionales. Utilice read_csv() cuando el archivo sea grande o cuando sea importante conservar los nombres exactos de las columnas.

Leer archivos de Excel

Excel Los archivos son muy populares entre los analistas de datos. Las hojas de cálculo son fáciles de utilizar y flexibles. R está equipado con una biblioteca readxl para importar hojas de cálculo de Excel.

Usa este código

require(readxl)

para comprobar si readxl está instalado en su máquina. Si instala r con r-conda-essential, la biblioteca ya está instalada. Deberías ver en la ventana de comandos:

Salida:

Loading required package: readxl.

Si el paquete no está instalado, puede instalarlo con conda. o en la terminal, use conda install -c mittner r-readxl.

Utilice el siguiente comando para cargar la biblioteca para importar archivos Excel.

library(readxl)

leerxl_ejemplo()

Usamos los ejemplos incluidos en el paquete readxl durante este tutorial.

Utilice el código

readxl_example()

para ver todas las hojas de cálculo disponibles en la biblioteca.

Leerxl_Ejemplo

Para comprobar la ubicación de una hoja de cálculo específica, indique su nombre:

readxl_example("geometry.xls")

Leerxl_Ejemplo

Si instala R con conda, las hojas de cálculo se encuentran en Anaconda3/lib/R/library/readxl/extdata/filename.xls

read_excel ()

La función read_excel() abre los archivos con extensión .xls y .xlsx y selecciona automáticamente el analizador sintáctico adecuado.

La sintaxis es:

read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments:
-PATH: Path where the excel is located
-sheet: Select the sheet to import. By default, all
-range: Select the range to import. By default, all non-null cells
-col_names: Select the columns to import. By default, all non-null columns

Podemos importar las hojas de cálculo de la biblioteca readxl y contar el número de columnas en la primera hoja.

# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)

Salida:

## [1] 5

hojas_excel()

El archivo datasets.xlsx se compone de 4 hojas. Podemos averiguar qué hojas están disponibles en el libro usando la función excel_sheets()

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

Salida:

[1] "iris"     "mtcars"   "chickwts" "quakes"

Si una hoja de trabajo incluye muchas hojas, es fácil seleccionar una hoja en particular utilizando los argumentos de la hoja. Podemos especificar el nombre de la hoja o el índice de la hoja. Podemos verificar si ambas funciones devuelven el mismo resultado con idéntico().

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

Salida:

## [1] TRUE

Podemos controlar qué celdas leer de 2 maneras

  1. Utilice el argumento n_max para devolver n filas
  2. Utilice el argumento de rango combinado con cell_rows o cell_cols

Por ejemplo, configuramos n_max en 5 para importar las primeras cinco filas.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Hojas de Excel

Si cambiamos col_names a FALSE, R crea los encabezados automáticamente.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

En el marco de datos iris_no_header, readxl generó cinco nombres de marcador de posición. Las versiones anteriores produjeron de X__1 a X__5, mientras que las versiones actuales producen de …1 a …5.

Hojas de Excel

También podemos usar el rango de argumentos para seleccionar filas y columnas en la hoja de cálculo. En el siguiente código, utilizamos el estilo Excel para seleccionar el rango A1 a B5.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

Salida:

## [1] 4 2

example_1 devuelve 4 filas y 2 columnas. El rango A1:B5 abarca cinco filas de la hoja de cálculo, pero la primera se utiliza como encabezado, por lo que la dimensión es de 4 por 2.

Hojas de Excel

En el segundo ejemplo, usamos la función cell_rows() que controla el rango de filas a devolver. Si queremos importar las filas 1 a 5, podemos configurar cell_rows(1:5). Tenga en cuenta que cell_rows(1:5) devuelve el mismo resultado que cell_rows(5:1).

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

Salida:

## [1] 4 5

example_2, por el contrario, es de 4 por 5. cell_rows(1:5) vuelve a tratar la primera fila como encabezado, por lo que se devuelven cuatro filas de datos en las cinco columnas.

Hojas de Excel

En caso de que queramos importar filas que no comienzan en la primera fila, debemos incluir col_names = FALSE. Si usamos range = cell_rows(2:5), resulta obvio que nuestro marco de datos ya no tiene encabezado.

iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE)
iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)

Hojas de Excel

También puede seleccionar columnas por letra, exactamente igual que en Excel:

# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)

Salida:

## [1] 150   2

Nota: rango = cell_cols(“A:B”), devuelve la salida de todas las celdas con un valor no nulo. El conjunto de datos contiene 150 filas, por lo tanto, read_excel() devuelve filas hasta 150. Esto se verifica con la función dim().

El argumento na le indica a read_excel() qué valores debe tratar como faltantes. Cuéntelos con sum() e is.na():

  1. suma
  2. es.na

Aqui esta el codigo

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

Salida:

## [1] 50

Nos faltan 50 valores, que son las filas que pertenecen a la especie setosa.

Importar datos de otro software estadístico

Los archivos de otros paquetes estadísticos se importan con el refugio paquete, que admite SASSTATA y SPSS. Podemos usar la siguiente función para abrir diferentes tipos de conjuntos de datos, según la extensión del archivo:

  • SAS: leer_sas()
  • STATA: read_dta() (o read_stata(), que son idénticos)
  • SPSS: read_sav() o read_por(). Necesitamos verificar la extensión.

Cada una de estas funciones necesita solo un argumento, la RUTA donde se almacena el archivo, y cada una acepta un URL tan fácilmente como un camino local.

library(haven)

haven viene con conda r-essential de lo contrario vaya a la este enlace o en la terminal conda install -c conda-forge r-haven

Leer archivos SAS

Para nuestro ejemplo, utilizaremos el conjunto de datos de admisión de IDRE.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

Salida:

## # A tibble: 6 x 4
##   ADMIT   GRE   GPA  RANK
##   <dbl> <dbl> <dbl> <dbl>
## 1     0   380  3.61     3
## 2     1   660  3.67     3
## 3     1   800  4.00     1
## 4     1   640  3.19     4
## 5     0   520  2.93     4
## 6     1   760  3.00     2

Leer archivos STATA

Para archivos de datos STATA puede utilizar read_dta(). Usamos exactamente el mismo conjunto de datos pero lo almacenamos en un archivo .dta.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

Salida:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3				
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Leer archivos SPSS

La función read_sav() abre un archivo SPSS con la extensión .sav.

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

Salida:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3			
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Mejores prácticas para la importación de datos

Revisar la siguiente lista de verificación antes de importar ahorra la mayor parte del trabajo de limpieza posterior:

  • El formato típico de una hoja de cálculo es utilizar las primeras filas como encabezado (normalmente el nombre de las variables).
  • Evite los espacios en blanco en el nombre de un archivo o columna, ya que pueden interpretarse como un separador de columnas. En su lugar, utilice un guion bajo.
  • Se prefieren nombres cortos
  • No utilice símbolos en el nombre. Escriba exchange_rate_dollar_euro en lugar de exchange_rate_$_€.
  • Codifique los valores faltantes como NA en lugar de como espacios en blanco, guiones o números centinela como -99, que de otro modo tendrían que limpiarse posteriormente.

Importación de datos en R: Referencia de funciones

La tabla que aparece a continuación enumera la función de importación para cada tipo de archivo, la biblioteca que la proporciona y sus argumentos predeterminados:

Biblioteca Objetivo Función Argumentos predeterminados
utils Leer archivo CSV read.csv () archivo, encabezado = VERDADERO, sep = “,”
leer xl Leer archivo EXCEL read_excel () ruta, rango = NULL, col_names = VERDADERO
refugio Leer archivo SAS leer_sas() camino
refugio Leer archivo STATA read_dta() / read_stata() camino
refugio Leer archivo SPSS leer_sav() camino

La segunda tabla muestra las formas de importar una selección con read_excel():

Función Objetivo Argumentos
read_excel () Leer n número de filas n_máx = 10
Seleccione filas y columnas como en Excel. rango = “A1:D10”
Seleccionar filas con índices rango = filas_celdas (1:3)
Seleccionar columnas con letras rango = cell_cols(“A:C”)

Preguntas Frecuentes

R 4.0.0 cambió el valor predeterminado de stringsAsFactors de TRUE a FALSE. Las columnas de caracteres ahora conservan el formato de caracteres. Pase el argumento explícitamente si su script debe comportarse de forma idéntica en versiones anteriores de R.

Vuelva a colocar la URL con la ruta local completa entre comillas, como “C:/Users/name/data.csv”. Use barras inclinadas hacia adelante o barras invertidas dobles en Windowsy confirme el directorio de trabajo con getwd().

readxl lee archivos .xls y .xlsx en R puro sin Java dependencia. Solo el paquete xlsx antiguo requiere Java a través de rJava, por eso readxl es la opción recomendada.

Los cambios de tipo silenciosos durante la importación son una causa común de resultados de IA no reproducibles. Declarar explícitamente los tipos de columna, tal como los informa read_csv(), garantiza que un conjunto de datos de entrenamiento se cargue de forma idéntica cada vez.

Sí. Los asistentes de IA pueden diagnosticar separadores incorrectos, problemas de codificación y errores en la lectura de encabezados a partir de un mensaje de error. Confirme siempre el resultado con `str()` o `glimpse()` antes de continuar el análisis.

Resumir este post con: