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.

Añadiendo una columna a múltiples archivos CSV que contiene una constante en cada fila.

Estoy intentando escribir un script que realice la siguiente secuencia a una variable que contiene una lista de archivos CSV:

  • lee cada archivo CSV
  • agrega una columna a cada archivo CSV con el encabezado “Tipo de Dimensión”, donde cada fila de la nueva columna contiene el nombre del encabezado en la primera columna
  • renombra el encabezado de la primera columna como “Dimensión”
  • combina todos los archivos CSV
  • exporta los archivos CSV combinados a un archivo de Excel

Todos los archivos CSV tienen la misma estructura, con la excepción del encabezado de la primera columna, que es el nombre del tipo de dimensión.

Creé la variable que contiene la lista de archivos CSV utilizando la función list.files, y también tengo almacenado en una variable el directorio donde quiero guardar el archivo de Excel.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la secuencia deseada, puedes usar el siguiente script:

    # Establece el directorio de trabajo donde se encuentran los archivos csv
    setwd("ruta/hacia/los/archivos/csv")
    
    # Carga los paquetes necesarios
    library(dplyr)
    library(readr)
    library(purrr)
    
    # Define la función para realizar las transformaciones requeridas
    add_column <- function(file_name) {
      # Lee el archivo csv
      file <- read_csv(file_name)
    
      # Agrega una nueva columna con el nombre del tipo de dimensión
      file <- file %>% mutate(`Tipo de Dimensión` = colnames(file)[1])
    
      # Renombra la primera columna como 'Dimensión'
      colnames(file)[1] <- "Dimensión"
    
      # Retorna el archivo modificado
      return(file)
    }
    
    # Aplica la función a todos los archivos csv en el directorio
    files_list <- list.files(pattern = "\\.csv$")
    files_modified <- map(files_list, add_column)
    
    # Combina todos los archivos modificados en un único dataframe
    combined_file <- bind_rows(files_modified)
    
    # Exporta el archivo combinado a un archivo de excel
    write_xlsx(combined_file, "ruta/hacia/el/archivo/excel.xlsx")
    

    En este script, primero establecemos el directorio de trabajo donde se encuentran los archivos csv. Luego cargamos los paquetes necesarios, que son dplyr, readr y purrr.

    A continuación, definimos una función llamada ‘add_column’ que toma un nombre de archivo como entrada, lee el archivo csv correspondiente, agrega una nueva columna llamada ‘Tipo de Dimensión’ donde cada fila contiene el nombre del encabezado en la primera columna, renombra la primera columna como ‘Dimensión’ y retorna el archivo modificado.

    Luego utilizamos la función ‘map’ del paquete purrr para aplicar esta función a cada archivo csv en el directorio y almacenar los archivos modificados resultantes en una lista llamada ‘files_modified’.

    Posteriormente, combinamos todos los archivos modificados en un único dataframe utilizando la función ‘bind_rows’ del paquete dplyr y almacenamos el resultado en una variable llamada ‘combined_file’.

    Finalmente, exportamos el archivo combinado a un archivo de excel utilizando la función ‘write_xlsx’ del paquete readxl, con una ruta de archivo especificada.

Comments are closed.