6.1 Importación y exportación de datos

Hay muchas maneras de importar datos en R, se recomiendan las librerías readr y readxl que forman parte del tidyverse.

6.1.1 Working directory

Un paso importante para la importación de datos en R es definir el directorio actual de trabajo o working directory porque se usarán rutas relativas para importar datos.

Es decir, saber donde RStudio está guardando los documentos que genero, por ejemplo Rscripts.

La función getwd() nos ayuda a identificar la ruta en la que estoy actualmente.

getwd()
## [1] "/Users/soniamendizabal/Documents/trabajo/intro-r-bookdown"

La función setwd() permite cambiar esta ruta o path de trabajo.

setwd("/Users/soniamendizabal/Documents/trabajo/intro-r-material/")



6.1.2 Importar datos locales

Uno de los formatos más comunes de datos es .csv (comma separated values), cualquier hoja de excel se puede extraer en este formato.

Del paquete readr se llama la función read_csv() para leer un archivo. Esta función tiene como argumento la ruta a la base de datos file = "path_of_file".

library(tidyverse)
bnames <- read_csv(file = "datos/bnames2.csv")
## Parsed with column specification:
## cols(
##   year = col_integer(),
##   name = col_character(),
##   percent = col_double(),
##   sex = col_double()
## )
head(bnames)
## # A tibble: 6 x 4
##    year    name  percent   sex
##   <int>   <chr>    <dbl> <dbl>
## 1  1880    John 0.081541     1
## 2  1880 William 0.080511     1
## 3  1880   James 0.050057     1
## 4  1880 Charles 0.045167     1
## 5  1880  George 0.043292     1
## 6  1880   Frank 0.027380     1
La función equivalente en el paquete básico de R es read.csv(). Los argumentos cambian por lo que es necesario, si deseas usar esta función, consultar la ayuda de la función.



6.1.3 Importar datos en línea

Otra forma común de importar datos en línea, es decir, obtener base de datos accesible desde la red, incluyendo internet.

Tomaremos la base de datos Iris disponible en la página (http://archive.ics.uci.edu/ml/datasets/Iris).

La función read_delim() permite importar archivos delimitados como un archivo csv que esta delimitado por comas o un archivo tsv delimitado por tabs.

Los argumentos de esta función son file el archivo, delim el delimitador que será una coma, y dado que la base de datos no tiene header se define con el argumento col_names.

iris.uci <- 
  read_delim(file = "http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data",
             delim = ",", 
             col_names = c("sepal_length", "sepal_width", 
                           "petal_length", "petal_width", 
                           "class"))
## Parsed with column specification:
## cols(
##   sepal_length = col_double(),
##   sepal_width = col_double(),
##   petal_length = col_double(),
##   petal_width = col_double(),
##   class = col_character()
## )
head(iris.uci)
## # A tibble: 6 x 5
##   sepal_length sepal_width petal_length petal_width       class
##          <dbl>       <dbl>        <dbl>       <dbl>       <chr>
## 1          5.1         3.5          1.4         0.2 Iris-setosa
## 2          4.9         3.0          1.4         0.2 Iris-setosa
## 3          4.7         3.2          1.3         0.2 Iris-setosa
## 4          4.6         3.1          1.5         0.2 Iris-setosa
## 5          5.0         3.6          1.4         0.2 Iris-setosa
## 6          5.4         3.9          1.7         0.4 Iris-setosa
La función equivalente en el paquete básico de R es read.delim(). Los argumentos cambian por lo que es necesario, si deseas usar esta función, consultar la ayuda de la función.



6.1.4 Exportar datos

Es posible guardar objetos en distintos formatos, que dependerá del uso que se le desee dar.

  1. Podemos guardar un dataframe en formato .csv usando la instrucción write_csv.
write_csv(x = tabla, path = "ejemplo_tabla.csv")
read_csv(file = "ejemplo_tabla.csv")
  1. Es posible guardar objetos creados en R usando el formato .RData que es exclusivo de R.
save(tabla, file = "ejemplo_tabla.RData")
load(file = "ejemplo_tabla.RData")
  1. También es posible guardar objetos en formato RDS usando write_rds y volverlos a leer con read_rds.

Este tipo de almacenamiento es más confiable y la lectura de los datos es más rápida:

write_rds(x = tabla, path = "ejemplo_tabla.Rds")
read_rds(path = "ejemplo_tabla.Rds")