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.

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.
Para comprobar la ubicación de una hoja de cálculo específica, indique su nombre:
readxl_example("geometry.xls")
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
- Utilice el argumento n_max para devolver n filas
- 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)
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.
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.
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.
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)
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():
- suma
- 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”) |







