Data Science

Cómo leer y guardar datos en R: información, objetos y gráficos

1. Guardar datos en R formato de tabla Desde archivos delimitados (.txt, .csv o .xls) Las funciones más comunes para guardar y leer datos estructurados en R son: write.table() y write.csv() para guardar data.frame o matrix respetando su …

Publicado30 de noviembre de 2017
Lectura5 min
Cómo leer y guardar datos en R: información, objetos y gráficos
Imagen

1. Guardar datos en R formato de tabla

Desde archivos delimitados (.txt, .csv o .xls)

Las funciones más comunes para guardar y leer datos estructurados en R son:

  • write.table() y write.csv() para guardar data.frame o matrix respetando su estructura.
  • read.table() y read.csv() para leer archivos de texto con datos.
text
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, ...)

write.csv(...)
text
read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, na.strings = "NA", ...)

read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)

Algunos argumentos clave:

  • file: ruta y nombre del archivo.
  • append: si TRUE, añade al archivo existente.
  • sep: separador de columnas ("," ";" "\t").
  • dec: símbolo decimal (R usa "."; Excel, ",").
  • na.strings: cómo se representan los valores ausentes (ej. "NA").

Ejemplo 1. Con las funciones write.table() y read.table()

text
> #creamos los datos que queremos guardar
> x <- data.frame(a = "Hola", b = 2.45)

> # podemos guardar nuestros datos 
> write.table(x, file = "Ejemplo1.txt", row.names = FALSE) # guarda un archivo txt
> write.csv(x, file = "Ejemplo1.csv", row.names = FALSE) # guarda un archivo csv
> write.table(x, file = "Ejemplo1.xls", row.names = FALSE) # guarda un archivo excel

> # elimina el objeto "x" 
> rm(x)

> # para leer los datos anteriores
> y <- read.table("Ejemplo1.txt", header=TRUE) # lee un archivo txt
> y= read.csv("Ejemplo1.csv",header = TRUE) # lee un archivo csv
> y <- read.table("Ejemplo1.xls", header=TRUE) # lee un archivo xls

> y 
     a    b
1 Hola 2.45

text
> str(y) # comprueba que los datos se han guardado/leído correctamente y mantienen el formato
'data.frame':    1 obs. of  2 variables:
$ a: Factor w/ 1 level "Hola": 1
$ b: num 2.45

En el caso de que los decimales estén determinados por una coma, debemos especificarlo en R (argumento dec=","), ya que R lee los decimales con puntos.

NOTA: Hay que recordar que si trabajas con RStudio tienes la opción de leer datos csv o txt fácilmente desde la barra de herramientas, en la ventana superior derecha "Import dataset".

Desde Excel (.xls o .xlsx)

Para trabajar con archivos de Excel, puedes usar el paquete xlsx:

text
write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, row.names=TRUE, append=FALSE)
text
read.xlsx(file, sheetIndex, header=TRUE, colClasses=NA)

Ejemplo 2. Con las funciones write.xlsx() y read.xlsx()

text
> # instalamos el paquete "xlsx"
> install.packages("xlsx")

> # activamos la librería "xlsx"
> library(xlsx)

> # guardamos los datos USArrests (vienen instalados por defecto en R) en un archivo Excel (.xlsx)
> write.xlsx(USArrests, file="Ejemplo2.xlsx", sheetName="USA", append=FALSE)
> # agregamos una pestaña con los datos mtcars (también se encuentran disponibles en R)
> write.xlsx(mtcars, file="Ejemplo2.xlsx", sheetName="MTCARS",  append=TRUE)
 
> # leemos los datos generados anteriormente
> D1<-read.xlsx("Ejemplo2.xlsx", sheetName = "USA")
> D2<-read.xlsx2("Ejemplo2.xlsx", sheetName = "MTCARS")

NOTA: también existen funciones que exportan los datos en formato SPSS, SAS o Stata.

2. Guardar objetos en formato .RData

Para guardar uno o varios objetos del entorno de R, utiliza:

  • save() para seleccionar qué guardar.
  • save.image() para guardar todo el entorno.
  • load() para restaurar objetos previamente guardados.

Ejemplo 3. Guardar y cargar objetos con save() y load()

text
> a=function(x){mean(x)}
> b="hola"
> c=1:5
> d=data.frame(a = 1, b = "a")

> # guarda los objetos en un archivo de datos de R
> save(a,b,c,d,file="Ejemplo.RData”)

> # eliminar los datos del área de trabajo
> rm(a, b, c, d)

> # lee el archivo de datos de R en tu área de trabajo
> load("Ejemplo.RData”) 

> a
function(x){mean(x)}

> b
[1] "hola"

> c
[1] 1 2 3 4 5

> d
  a b
1 1 a

> str(a)
function (x)  
- attr(*, "srcref")=Class 'srcref'  atomic [1:8] 1 3 1 22 3 22 1 1
  .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x10471c358>

> str(b)
chr "hola"

> str(c)
int [1:5] 1 2 3 4 5

> str(d)
'data.frame':    1 obs. of  2 variables:
$ a: num 1
$ b: Factor w/ 1 level "a": 1

3. Guardar objetos con sus metadatos

El formato nativo de R permite guardar objetos con sus metadatos completos mediante funciones como:

  • dump() para guardar funciones o datos con su estructura interna.
  • sink() para redirigir la salida de consola a un archivo.
  • source() para volver a cargar el código desde un archivo.

Ejemplo 4. Guardar objetos con dump(), sink() y source()

text
> a=function(x){mean(x)}
> a=function(x){mean(x)}
> b="hola"
> c=1:5
> d=data.frame(a = 1, b = "a")

> # guarda los objetos en un archivo de datos de R
> dump(c("a","b","c","d"),file="Ejemplo.R”)

> # eliminar los datos del área de trabajo
> rm(a, b, c, d) 


text
> # guarda los objetos en un archivo de datos txt
> sink("Datos.txt") 
> x <- c(1, 12, 3, 0)
> summary(x) # no muestra los resultados pero los guarda en el fichero txt
> sink()


text
> # lee el archivo de datos de R en tu área de trabajo
> source("Ejemplo.R")

> a
function(x){mean(x)}

> b
[1] "hola"

> c
[1] 1 2 3 4 5

> d
  a b
1 1 a

> str(a)
function (x)  
- attr(*, "srcref")=Class 'srcref'  atomic [1:8] 2 1 2 20 1 20 2 2
  .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x10b70a8b0>

> str(b)
chr "hola"

> str(c)
int [1:5] 1 2 3 4 5

> str(d)
'data.frame':    1 obs. of  2 variables:
$ a: num 1
$ b: Factor w/ 1 level "a": 1

NOTA: Personalmente prefiero utilizar save/load en lugar de dump/source para trabajar con objetos, porque es más sencilla (dump() no es tan agradable y ocupa más espacio con los metadatos).

4. Guardar gráficos (.jpg, .png, .tiff, .bmp, .pdf)

Puedes guardar gráficos en diversos formatos como .jpg, .png, .tiff, .bmp o .pdf mediante:

  • jpeg(), png(), bmp(), tiff() para imágenes raster.
  • pdf() para gráficos vectoriales de alta calidad.

da para fuentes adicionales (por defecto Helvetica), "paper" indica el tamaño del papel ("a4", "letter", "legal", "executive", etc.) , "bg" y "fg" para el color de fondo capa, respectivamnte, "pointsize" especifica el tamaño de los puntos (por defecto 12), "colormodel" la configuración de color ("srgb" -por defecto-, "gray" o "cmyk").

Ejemplo 5. Con las funciones jpeg, png, pdf

text
> # guardar un archivo en formato jpg
> jpeg('Grafico1.jpg') #abre el gráfico con el nombre dado (se guardará en el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

> # guardar un archivo en formato png
> png('Grafico1.png') #abre el gráfico con el nombre dado (se guardará en el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

> # guardar un archivo en formato pdf
> pdf("Grafico1.pdf")
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico

NOTA: también existe la función bmp() y tiff().

¡Saludos!

Sigue leyendo

Artículos relacionados

Nuevo partner Tests & Trials
Data Science

Nuevo partner Tests & Trials

Máxima Consultoría integra a Tests &amp; Trials en su proyecto de asesoría estadística para empresas e instituciones. El nuevo partner Tests &amp; Trials aportará una experiencia de más de dos décadas en el diseño experimental y la aseso…

Leer más
Qué es y qué hace un Data Scientist
Data Science

Qué es y qué hace un Data Scientist

¿Por qué es tan importante el perfil del Data Scientist? Según el Informe de empleos emergentes de LinkedIn , el Data Scientist es la segunda profesión con más proyección de futuro. Este perfil profesional ha despertado el interés de per…

Leer más
Domina la Ciencia de Datos con Estadística Aplicada
Data Science

Domina la Ciencia de Datos con Estadística Aplicada

Domina la Ciencia de Datos actual Aún puedes incorporarte a la IX edición del&nbsp; Máster de Estadística Aplicada con R Software . Matrícula abierta hasta&nbsp;el 29 de noviembre. Esto es lo que nadie te cuenta: la clave para dominar la…

Leer más