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

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

nov´17 Rosana Ferrero 0 comentarios

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.
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: 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()

    > #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

      Información Básica sobre Protección de datos. Responsable: Máxima Formación, S.L. Finalidad: Enviar la información solicitada. Legitimación: Consentimiento del interesado. Destinatarios: No se comunicarán datos a terceros. Derechos: Acceso, rectificación o supresión, oposición, así como otros derechos. Más información: política de privacidad.

      ¹ Todos los campos son obligatorios.
      ² Tu correo electrónico no será publicado.

      Nadie ha publicado ningún comentario aún. ¡Se tu la primera persona!

      Te llamamos

      Introduce los siguientes datos y nos pondremos en contacto contigo para atender tus dudas sin compromiso.

      Responsable: Máxima Formación, S.L.U., finalidad: Dar respuesta a las solicitudes de información legitimación: consentimiento del interesado, destinatarios: no se comunicarán datos a terceros, derechos: Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. Política de privacidad

      Te llamamos

      Muchas gracias por solicitar información.
      Te contactaremos lo antes posible.

      Diseño web: Albin Soft.