Importar datos en R: leer archivos CSV, Excel, SPSS, Stata, SAS
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 CSV
Uno de los almacenes de datos mรกs utilizados son los formatos de archivo .csv (valores separados por comas). R carga una serie de bibliotecas durante el inicio, incluido el paquete de utilidades. Este paquete es conveniente para abrir archivos csv combinados con la funciรณn Reading.csv(). Aquรญ estรก la sintaxis de read.csv
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)
Resultado
## [1] 12
class(df$X)
Resultado
## [1] "factor"
R, de forma predeterminada, devuelve valores de caracteres como Factor. Podemos desactivar esta configuraciรณn agregando stringsAsFactors = FALSE.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Resultado
## [1] "character"
La clase de la variable X ahora es un carรกcter.
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:
Resultado
Loading required package: readxl.
Si el paquete no sale, puedes 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 verificar la ubicaciรณn de la hoja de cรกlculo llamada clippy.xls, use simplemente
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() es de gran utilidad cuando se trata de abrir extensiones xls y xlsx.
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)
Resultado
## [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)
Resultado
[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)
Resultado
## [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, R creรณ cinco nuevas variables denominadas X__1, X__2, X__3, X__4 y X__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)
Resultado
## [1] 4 2
Podemos ver que ejemplo_1 devuelve 4 filas con 2 columnas. El conjunto de datos tiene un encabezado, por lo que la dimensiรณn es 4 ร 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)
Resultado
## [1] 4 5
Sin embargo, el ejemplo_2 es โโuna matriz de 4ร5. El conjunto de datos del iris tiene 5 columnas con encabezado. Devolvemos las primeras cuatro filas con el encabezado de todas las 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)
We can select the columns with the letter, like in Excel.
# Select columns A and B
col <-read_excel(example, range =cell_cols("A:B"))
dim(col)
Resultado
## [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().
read_excel() devuelve NA cuando aparece un sรญmbolo sin valor numรฉrico en la celda. Podemos contar el nรบmero de valores faltantes con la combinaciรณn de dos funciones.
- suma
- es.na
Aqui esta el codigo
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Resultado
## [1] 50
Nos faltan 50 valores, que son las filas que pertenecen a la especie setosa.
Importar datos de otro software estadรญstico
Importaremos diferentes formatos de archivos con el paquete Heaven. Este paquete es compatible SAS, STATA y SPSS. Podemos utilizar la siguiente funciรณn para abrir distintos 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.
Solo se requiere un argumento dentro de estas funciones. Necesitamos saber la ruta donde se almacena el archivo. Eso es todo, estamos listos para abrir todos los archivos de SAS, STATA y SPSS. Estas tres funciones aceptan un URL .
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 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)
Resultado
## # 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 ESTADรSTICAS
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)
Resultado
## # 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 SPSS
Usamos la funciรณn read_sav() para abrir un archivo SPSS. La extensiรณn del archivo โ.savโ
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Resultado
## # 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
Cuando queremos importar datos a R, resulta รบtil implementar la siguiente lista de verificaciรณn. Esto facilitarรก la importaciรณn correcta de datos a R:
- El formato tรญpico de una hoja de cรกlculo es utilizar las primeras filas como encabezado (normalmente el nombre de las variables).
- Evite nombrar un conjunto de datos con espacios en blanco; puede llevar a interpretar como una variable separada. Alternativamente, prefiera utilizar "_" o "-".
- Se prefieren nombres cortos
- No incluya el sรญmbolo en el nombre: es decir: exchange_rate_$_โฌ no es correcto. Prefiero ponerle el nombre: exchange_rate_dollar_euro
- De lo contrario, utilice NA para los valores faltantes; necesitaremos limpiar el formato mรกs tarde.
Resumen
La siguiente tabla resume la funciรณn que se debe utilizar para importar distintos tipos de archivos en R. La primera columna indica la biblioteca relacionada con la funciรณn. La รบltima columna hace referencia al argumento predeterminado.
| 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 | leer_stata() | camino |
| refugio | Leer archivo SPSS | leer_sav() | camino |
La siguiente tabla muestra las diferentes formas de importar una selecciรณn con la funciรณn 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โ) |







