Tengo ~100 archivos CSV que quiero combinar en una sola hoja de cálculo de Excel (todo en una pestaña, no en pestañas separadas). Estos archivos CSV tienen un formato idéntico: cada uno contiene 4000 filas y 2 columnas con encabezado, con un tamaño aproximado de 60 KB.
Todas las soluciones que he encontrado hasta ahora añaden el siguiente CSV al final de la última fila de la pestaña activa. No he visto uno que pueda agregar nuevos CSV a las columnas inmediatamente a la derecha de la última columna.
A continuación se muestran algunos ejemplos.
Método de copia de DOS: copiar *.csv merge.txt
Esta solución. (Secuencia de comandos VBA).
Usando datos de Excel>Nueva consulta>Desde archivo>Desde carpeta (Excel 2013).
También hay ejemplos con scripts de Windows Powershell para fusionar archivos CSV en Internet.
Todo lo anterior crea una única hoja de cálculo de Excel con alrededor de 400.000 filas de datos, lo cual no me sirve de nada.
Agradecería sugerencias para resolver este problema. ¡Gracias!
Editar. Se encuentra una solución fácil: usar cbind() de r para combinar los datos en un marco de datos y luego escribirlos en un csv. Todo el proceso tomó ~3 segundos. ¡Herramienta adecuada para el trabajo!
Gracias a todos por contribuir. Salud,
--tcollar
Respuesta1
No estoy seguro acerca de Windows 10 "nativo", pero si tiene instalado el Subsistema de Windows para Linux, puede usar el paste
comando UNIX, que debería concatenar los archivos por columnas, de la forma que usted solicita.
Respuesta2
Usando su tercera opción: 'Usando datos de Excel>Nueva consulta>Desde archivo>Desde carpeta (Excel 2013)'
Haga clic en la transform data
opción, esto abre el editor de consultas de energía. Mostrará una lista de los archivos.
Haga clic en el botón en el encabezado de la columna content
para crear una función que pueda transformar cada archivo CSV individual antes de agregarlo.
Seleccione la tabla u hoja de trabajo correcta y haga lo siguiente en la transform sample file
función.
- Inserte los nombres de las columnas en la primera fila usando "usar encabezados como primera fila"
- Tabla de transposición
Luego, en la consulta donde se invoca la función, se agregan los archivos CSV transpuestos. Simplemente transpose
devuelva la mesa a su forma original y promuévala the first row to headers
.
Respuesta3
Aquí está el código r para combinar archivos csv por columna:
setwd("C:/mycsvdir")
filenames <- list.files(full.name=TRUE)
## read csv, skipping the first two rows of every file
Everything <- lapply(filenames, function(i){read.csv(i, header=TRUE, skip=2)}
combined.df <- do.call(cbind.data.frame, Everything)
write.csv(combined.df, file = "combined.csv", row.names=FALSE)
Si desea combinar archivos csv por fila, simplemente reemplácelos cbind
con rbind
.
Editar: Acerca de la secuencia de fusión: mis archivos csv tienen nombres como mycsv 001.csv
, mycsv 002.csv
etc. Se leyeron y fusionaron exactamente en esa secuencia, lo cual fue excelente para mi propósito.