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.

¿Cómo puedo tomar automáticamente el archivo .txt más recientemente modificado en una carpeta, convertirlo a .xlsx y sobrescribir un archivo .xlsx existente?

Estoy intentando utilizar R para automatizar la actualización de datos en un documento de Excel, pero soy nuevo en la programación y estoy teniendo problemas.

Aquí está el escenario:

Cada mañana, recibo un archivo .txt con un nombre único (la misma información) depositado en la misma carpeta. No sobrescribe el archivo .txt del día anterior, simplemente crea uno nuevo.

Espero poder utilizar R para leer automáticamente el archivo .txt más reciente de la carpeta, convertirlo a .xlsx y actualizar/sobrescribir un archivo .xlsx existente. Este archivo .xlsx servirá como base para un panel de control, por lo que es importante que el mismo archivo .xlsx reciba la nueva información de cada archivo .txt diario.

Nuevamente, soy completamente nuevo en la programación, por lo que no tengo una idea educada de cómo se codificaría esto, pero a continuación está mi mejor intento inicial:

require(readtext)
require(dplyr)
require(eeptools)

<h1>Establecer el directorio de trabajo</h1>

setwd("G:\My Drive\Dashboards\Text Files")

<h1>Leer el archivo de texto más reciente</h1>

data_files <- file.info(Sys.glob("*.txt"))
row.names(data_files)[which.max(data_files[["ctime"]])]

¿Alguien sabe exactamente cómo tendría que codificar esto?

Gracias de antemano por tu ayuda. ¡Lo aprecio enormemente!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para automatizar la actualización de datos en un documento de Excel utilizando R, puedes seguir los siguientes pasos:

    1. Establece el directorio de trabajo en la carpeta donde se guardan los archivos .txt diarios.
    2. Utiliza la función list.files() para crear un vector con todos los nombres de archivo dentro de la carpeta.

    file_names <- list.files()
    
    1. Utiliza grep() para extraer solo los archivos .txt del vector de nombres de archivo.
    txt_files <- grep(".txt", file_names, value=TRUE)
    
    1. Utiliza la función tail() para seleccionar el archivo .txt más reciente.
    recent_file <- tail(txt_files, 1)
    
    1. Utiliza la función read.table() para leer los datos del archivo .txt más reciente.
    data <- read.table(recent_file, header=TRUE, sep="\t")
    
    1. Utiliza la función write.xlsx() del paquete openxlsx para escribir los datos en un archivo de Excel.
    require(openxlsx)
    
    write.xlsx(data, "dashboard_data.xlsx", sheetName="Data", 
               overwrite=TRUE, append=FALSE)
    

    Este código leerá el archivo .txt más reciente, lo convertirá a .xlsx y sobrescribirá el archivo existente “dashboard_data.xlsx” con la información actualizada. Luego puedes utilizar este archivo actualizado como base para tu panel de control.

Comments are closed.