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.

Write_csv no conserva los col_types (tipos de columna).

Tengo un data.frame que contiene una columna con cadenas de números.

complete_code iris
1     774680203 0203
2     774950102 0102
3     772800000 0000
4     774680206 0206
5     770140104 0104
6     771230000 0000

Quiero guardarlo como un archivo .csv con write_csv, pero cuando lo cargo nuevamente, obtengo:

read_csv("file.csv", col_names = TRUE, col_types = cols(complete_code = col_character(), iris = col_character())
complete_code  iris
          <dbl> <dbl>
1     774680203   203
2     774950102   102
3     772800000     0
4     774680206   206
5     770140104   104
6     771230000     0

Por lo tanto, estoy perdiendo el primer “0” en mi cadena de números. Intenté usar el argumento col_types, pero no logro mantener todos los “0” en mi conjunto de datos.

¿Tiene algún método que podría ayudarme? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes forzar a read_csv a leer la columna iris como un vector de caracteres especificando su tipo de columna como col_character() en el argumento col_types:

    library(readr)
    
    df <- read_csv("file.csv", col_types = cols(complete_code = col_character(), iris = col_character()))
    
    df
    # A tibble: 6 x 2
      complete_code iris 
      <chr>         <chr>
    1 774680203     0203 
    2 774950102     0102 
    3 772800000     0000 
    4 774680206     0206 
    5 770140104     0104 
    6 771230000     0000 
    
    # Guardar como archivo csv
    write_csv(df, "new_file.csv")
    

    Esto asegurará que read_csv lea la columna iris como un vector de caracteres y no pierda ningún cero inicial. Al guardar el archivo nuevamente en formato csv utilizando write_csv, los ceros iniciales también se conservarán en el archivo de salida.

Comments are closed.