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

Guía completa para realizar un ANOVA de medidas repetidas en R paso a paso
Data Science

Guía completa para realizar un ANOVA de medidas repetidas en R paso a paso

El ANOVA de medidas repetidas es una herramienta fundamental cuando queremos analizar cómo cambia una variable continua a lo largo del tiempo o bajo diferentes condiciones, en los mismos sujetos . A diferencia del ANOVA tradicional, aquí…

Leer más
¿Qué es la Ciencia de Datos y por qué está transformando el mundo?
Data Science

¿Qué es la Ciencia de Datos y por qué está transformando el mundo?

Existe una gran discusión sobre qué es la Ciencia de Datos, pero podemos resumirla en la siguiente frase: “La Ciencia de Datos ( o Data Science ) es la disciplina que convierte los datos en conocimiento útil” . ¿QUÉ ES LA CIENCIA DE DATO…

Leer más
II Jornadas Nacionales de Estadística como herramienta científica
Data Science

II Jornadas Nacionales de Estadística como herramienta científica

Los próximos 12, 13 y 14 de septiembre se celebran en la Universidad de Jaén las&nbsp;II Jornadas Nacionales de Estadística como Herramienta Científica. Por segundo año consecutivo, Máxima Formación patrocina este evento destacado en el …

Leer más