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:
- presentar: 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"
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)
Salida
## [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:
Salida
Loading required package: readxl.
Si el paquete no sale, puedes instalarlo con conda bibliotecas 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)
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, 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)
Salida
## [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)
Salida
## [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)
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().
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))
Salida
## [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.
Sólo se requiere un argumento dentro de estas funciones. Necesitamos saber la RUTA donde está almacenado el archivo. Eso es todo, estamos listos para abrir todos los archivos de SAS, STATA y SPSS. Estas tres funciones también aceptan una URL.
library(haven)
haven viene con conda r-essential de lo contrario vaya a la 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)
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 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)
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 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)
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
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.
Resum
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”) |