es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clase de escritura y lectura de columnas a CSV

Para un dataframe, me gustaría guardar la clase de datos de cada columna (por ejemplo, char, double, factor) en un archivo csv, y luego poder leer tanto los datos como las clases de vuelta en R.

Por ejemplo, mis datos podrían verse así:

df
# A tibble: 3 x 3
   item  cost blue 
  <int> <int> <fct>
1     1     4 1    
2     2    10 1    
3     3     3 0    

(código para la entrada de datos aquí:)

library(tidyverse)
df <- tibble::tribble(
  ~item, ~cost, ~blue,
     1L,    4L,    1L,
     2L,   10L,    1L,
     3L,    3L,    0L
  )

df <- df %>% 
  mutate(blue = as.factor(blue))
df

Puedo guardar las clases de datos y los datos de la siguiente manera:

“`{r}
library(tidyverse)
classes <- map_df(df, class)

write_csv(classes, "classes.csv")
write_csv(df, "data.csv")

<pre><code>y puedo leerlo de vuelta de esta manera:

</code></pre>

classes <- read_csv("classes.csv") %>%
slice(1) %>%
unlist()
classes
df2 <- read_csv("data.csv", col_types = classes)
df2
“`

¿Hay una manera más rápida de hacer todo esto?

Particularmente con la forma en que estoy guardando classes y luego leyéndolo de vuelta, luego cortándolo y desempaquetándolo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera más rápida y eficiente de guardar y leer los datos y clases de un dataframe en R. Puedes usar el paquete readr para leer y escribir archivos csv con sus tipos de datos correspondientes usando las funciones readr::write_csv() y readr::read_csv().

    Así es como puedes hacerlo:

    “`{r}
    library(readr)

    Escribir un dataframe en csv junto con sus tipos de datos

    write_csv(df, “datos_y_clases.csv”, col_types = cols_only())

    Leer el archivo csv con datos y clases

    df2 <- read_csv(“datos_y_clases.csv”)

    Comprobar si los tipos de datos se han restaurado correctamente

    glimpse(df2)
    “`

    La función cols_only() en readr se asegura de incluir el tipo de dato junto con los datos al escribir el archivo csv. Al leer el archivo csv, read_csv() detecta y restaura automáticamente los tipos de datos para cada columna sin necesidad de guardar e importar manualmente los tipos de datos por separado. Por lo tanto, este método es más eficiente y menos propenso a errores en comparación con el método anterior.

    En resumen, puedes usar las funciones readr::write_csv() y readr::read_csv() para guardar y leer tanto los datos como las clases de un dataframe en un solo archivo csv de manera eficiente.

Comments are closed.