Exportar datos en R

Manipulación de datos con R Importar y exportar datos
Aprende a exportar datos en R a CSV, TXT, Excel, entre otros formatos

R permite trabajar con datos y almacenarlos en variables en el espacio de trabajo. Sin embargo, a veces se necesita exportar o guardar para compartir o trabajar con los resultados en otro software. En este tutorial aprenderás cómo exportar datos en R o RStudio. Ten en cuenta que puedes exportar datos de R a varios formatos, como CSV, SAV, XLS, XLSX, TXT o incluso XML.

Guardar objetos de R

Al trabajar con R, puedes guardar los objetos almacenados en tu espacio de trabajo. Hay tres opciones principales, dependiendo de si quieres guardar el espacio de trabajo completo, algunos objetos o solo uno.

Exportar objetos de R desde tu espacio de trabajo es muy útil cuando tu código tarda mucho tiempo en ejecutarse, como en los estudios de simulación. En consecuencia, si necesitas los resultados después de la primera ejecución, no necesitarás volver a ejecutar el código.

Primero, puedes exportar todo el espacio de trabajo desde R con la función save.image como se muestra en el siguiente bloque de código. Ten en cuenta que el archivo resultante será de tipo RData.

# Exportar todos los objetos (la imagen del entorno de trabajo)
save.image(file = "Objetos_R.RData")

En segundo lugar, si solo necesitas exportar algunos objetos, puedes especificarlos separados por comas con la función save.

# Exportar algunos objetos de R
save(x, y, file = "Dos_objetos.RData")

Finalmente, para guardar solo un objeto, se recomienda guardarlo como RDS con la función saveRDS:

# Exportar solo un objeto de R
saveRDS(x, file = "Un_objeto.rds")

Si especificas compress = TRUE como argumento de las funciones anteriores, el archivo se comprimirá de forma predeterminada como gzip.

Guardar data frame como CSV en R

En caso de que quieras exportar un data frame como CSV en R, puedes utilizar las funciones write.csv o write.csv2.

El uso de una u otra dependerá del formato de tus datos. En algunos países usan una coma como separador decimal, por lo que no se puede guardar un CSV separado por comas en este escenario. En este caso, el CSV se crea utilizando un punto y coma como separador de los datos. Lo último es lo que hace la función write.csv2, mientras que write.csv usa una coma para separar los datos. En consecuencia, puedes exportar a CSV escribiendo:

df <- data.frame(x = rnorm(10), y = rnorm(10))

# Coma como separador y punto como separador decimal
write.csv(df, "mi_df.csv")

# Punto y coma como separador y coma como separador decimal
write.csv2(df, "mi_df.csv")

Ten en cuenta que también puedes escribir una tabla en CSV en R con las mismas funciones:

tb <- table(chickwts$feed)

write.csv(tb, "mi_tb.csv")

write.csv2(tb, "mi_tb.csv")

Recuerda escribir ?write.csv o help(write.csv) para obtener más información.

En esta y las otras funciones de este tutorial, si especificas solo el nombre del archivo resultante, el archivo se guardará en el directorio de trabajo. Si prefieres otra ubicación, cambia el directorio de trabajo o especifica la ruta completa, en lugar de solo el nombre del archivo.

Exportar datos desde R a un archivo TXT

Para exportar un TXT en R puedes usar la función write.table. Considera, por ejemplo, que quieres exportar un data frame de R a un archivo TXT. En este caso podrías escribir:

df <- trees[1:5, ]

write.table(df, "archivo.txt")

Sin embargo, si quieres imprimir en la consola lo que vas a guardar, antes de guardarlo, puedes escribir:

write.table(df)
   "Girth"  "Height"  "Volume"
"1"   8.3      70       10.3
"2"   8.6      65       10.3
"3"   8.8      63       10.2
"4"   10.5     72       16.4
"5"   10.7     81       18.8

Ten en cuenta que también puedes exportar un objeto, como un vector, a TXT con esta función:

x <- runif(5)
write.table(x, "vector.txt")

Si guardas como TXT un objeto diferente a un data frame o una matriz, se intentará convertir a data frame por defecto.

Además, hay varios argumentos que puedes personalizar. Como ejemplo, si quieres especificar la codificación y escribir la tabla sin comillas, puedes ejecutar lo que sigue:

write.table(x, "vector.txt", fileEncoding = "UTF-8", quote = FALSE)

Exportar datos de R a Excel (XLS y XLSX)

La exportación de datos de R a Excel se puede lograr con varios paquetes. El paquete más conocido para convertir data frames o tablas en Excel es xlsx, que proporciona las funciones write.xlsx y write.xlsx2.

# Requiere JAVA
# install.packages("xlsx")
library(xlsx)

# Coma como separador y punto como separador decimal
write.xlsx(x,                    # Data frame a ser exportado
           file,                 # Ruta completa
           sheetName = "Sheet1", # Nombre de la hoja de Excel
           col.names = TRUE,     # Incluir los nombres de las columnas (TRUE) o no (FALSE)
           row.names = TRUE,     # Incluir los nombres de las filas (TRUE) o no (FALSE)
           append = FALSE,       # Agregar a un archivo existente (TRUE) o no (FALSE)
           showNA = TRUE,        # Si TRUE, los NA serán celdas vacías
           password = NULL)      # Contraseña como cadena de caracteres

# Punto y coma como separador y coma como separador decimal
write.xlsx2(x, file, sheetName = "Sheet1", col.names = TRUE,
            row.names = TRUE, append = FALSE, showNA = TRUE, password = NULL)

Como ejemplo, si quieres guardar el conjunto de datos de cars, puedes escribir:

write.xlsx(cars, "cars.xlsx")

Sin embargo, la principal desventaja del paquete anterior es que requiere JAVA instalado en tu ordenador, por lo que si JAVA_HOME no se especifica o si R no encuentra el archivo rJava.dll, el paquete no funcionará.

Las alternativas para exportar la salida de R a XLSX que no requieren JAVA son los paquetes openxlsx y writexl:

Por un lado, la función write.xlsx de openxlsx permite escribir un data frame o una lista de data frames en un archivo XLSX:

# install.packages("openxlsx")
library(openxlsx)

write.xlsx(data_frame, "nombre.xlsx")

Por otro lado, la biblioteca writexl proporciona la función write_xlsx, para exportar data frames de R a Excel:

# install.packages("writexl")
library("writexl")

write_xlsx(data_frame, "nombre.xlsx")

Exportar a SPSS desde R

En caso de que quieras exportar a SPSS desde R, necesitarás instalar el paquete llamado haven, que contiene la función write_sav. El proceso para guardar los datos es análogo a los demás:

# install.packages("haven")
library(haven)

write_sav(mtcars, "mtcars.sav")

Guardar como STATA desde R

En caso de que desees exportar datos de R a STATA, deberás usar la función write.dta del paquete foreign de la siguiente manera:

# install.packages("foreign")
library(foreign)

write.dta(data_frame, "mis_datos.dta")

Exportar datos de R a XML

Para exportar fácilmente un data frame a formato XML, puedes usar la función write.xml del paquete kulife, indicando como primer argumento el conjunto de datos y el nombre del archivo exportado en el segundo. En este ejemplo vamos a guardar el conjunto de datos mtcars.

# install.packages("kulife")
library(kulife)

write.xml(mtcars, "mtcars.xml")
<?xml version="1.0"?>
<document>
  <row>
    <mpg>21</mpg>
    <cyl>6</cyl>
    <disp>160</disp>
    <hp>110</hp>
    <drat>3.9</drat>
    <wt>2.62</wt>
    <qsec>16.46</qsec>
    <vs>0</vs>
    <am>1</am>
    <gear>4</gear>
    <carb>4</carb>
  </row>

No obstante, es posible que hayas notado que el archivo XML de salida no contiene los nombres de las filas del data frame, ya que el lenguaje de marcado no admite nombrarlas. Para resolver este problema, en este ejemplo puedes vincular los nombres de fila al conjunto de datos y nombrar la nueva columna como “car”.

data <- cbind(rownames(mtcars), mtcars)
colnames(data)[1] <- "car"

write.xml(data, "mtcars.xml")
<?xml version="1.0"?>
<document>
  <row>
    <car>Mazda RX4</car>
    <mpg>21</mpg>
    <cyl>6</cyl>
    <disp>160</disp>
    <hp>110</hp>
    <drat>3.9</drat>
    <wt>2.62</wt>
    <qsec>16.46</qsec>
    <vs>0</vs>
    <am>1</am>
    <gear>4</gear>
    <carb>4</carb>
  </row>

Ahora, cada fila del documento XML contendrá el nombre del coche y sus características.