
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()
ywrite.csv()
para guardardata.frame
omatrix
respetando su estructura.read.table()
yread.csv()
para leer archivos de texto con datos.
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, ...) write.csv(...)
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
: siTRUE
, 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()
> #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
> 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:
write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, row.names=TRUE, append=FALSE)
read.xlsx(file, sheetIndex, header=TRUE, colClasses=NA)
Ejemplo 2. Con las funciones write.xlsx() y read.xlsx()
> # 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(
)
> 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()
> 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)
> # 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()
> # 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
> # 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!
0 comentarios
Nadie ha publicado ningún comentario aún. ¡Se tu la primera persona!