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.

Leer archivos .csv donde faltan comas. Base R

Estoy leyendo archivos .csv en R que fueron producidos por un software que agrega etiquetas adicionales a los datos que exporta, sin colocar comas después de estas etiquetas adicionales. Una versión simplificada del archivo de texto se puede ver en la siguiente imagen.

Cuando importo utilizando la función read.csv() y veo los datos, obtengo lo siguiente:

Luego intenté read.csv2 y escribí un nuevo archivo eliminando las primeras dos filas:

Modificado a:

Esto se muestra en un archivo de texto de la siguiente manera:

Esta tarea se está volviendo laboriosa y me pregunto si hay una forma más eficiente de limpiar los archivos (ya que tengo muchos).

Básicamente, lo que estoy tratando de hacer es crear un archivo .csv que, al leerse en R, tenga dos columnas, la primera con el encabezado “Tiempo [s]” y la segunda columna con el encabezado “Función”. El encabezado “x” no va seguido de una coma cuando se exporta como un nuevo archivo .csv y esto me impide leer mi archivo en R en la forma que describí.

Los datos se pueden copiar y pegar (creo), utilizando:

estructura(lista(X.Name. = c(“”, “”, “Función”, “0.00E+00”, “4.00E+00”, “6.50E+00”, “7.10E+00”, “3.00E+00”)), clase = “data.frame”, nombres de fila = c(“Serie 1 en Función Utilizada”, “[Datos]”, “Tiempo [ s ]”, “0.00E+00”, “5.00E+00”, “1.00E+01”, “1.50E+01”, “2.00E+01”))

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para organizar los archivos .csv y crear un archivo que se pueda leer en R como dos columnas con encabezados, el mejor enfoque sería escribir un script en R que automatice el proceso para todos los archivos. El script debería leer los archivos, eliminar las dos primeras filas (o según sea necesario) y extraer las columnas requeridas para crear un nuevo archivo .csv con los nombres de encabezado deseados.

    Aquí tienes un ejemplo de código que podría lograr esto:

    # establecer directorio de trabajo
    setwd("ruta/del/directorio/que/contiene/los/archivos")
    
    # listar todos los archivos csv en el directorio
    csv_files <- list.files(pattern = ".csv")
    
    # recorrer los archivos y procesarlos
    for (archivo in csv_files) {
      # leer archivo csv
      datos <- read.csv(archivo, header = FALSE)
    
      # eliminar las dos primeras filas
      datos <- datos[-c(1,2),]
    
      # extraer las columnas requeridas y establecer los nombres de encabezado
      datos <- datos[,c(1,3)]
      colnames(datos) <- c("Tiempo [s]", "Función")
    
      # escribir en un nuevo archivo csv
      write.csv(datos, paste0("nuevo_", archivo), row.names = FALSE)
    }
    

    Este código recorrerá todos los archivos .csv en el directorio especificado, eliminará las dos primeras filas, extraerá las columnas 1 y 3, establecerá los nombres de encabezado y escribirá la salida en un nuevo archivo .csv con el mismo nombre que el archivo original, pero con “nuevo_” agregado al principio.

    Este enfoque ahorrará tiempo y esfuerzo al trabajar con una gran cantidad de archivos .csv que requieren un procesamiento similar.

Comments are closed.