Ich habe ca. 100 CSV-Dateien, die ich in einer einzigen Excel-Tabelle zusammenführen möchte (alles in einer Registerkarte, nicht in separaten Registerkarten). Diese CSV-Dateien haben das gleiche Format: Jede enthält 4.000 Zeilen und 2 Spalten mit Kopfzeile und ist etwa 60 KB groß.
Alle Lösungen, die ich bisher gefunden habe, hängen die nächste CSV-Datei am Ende der letzten Zeile der aktiven Registerkarte an. Ich habe noch keine Lösung gesehen, die neue CSV-Dateien an die Spalten direkt rechts neben der letzten Spalte anhängen kann.
Hier sind einige Beispiele.
DOS-Kopiermethode: copy *.csv merge.txt
Diese Lösung. (VBA-Skript.)
Verwenden von Excel: Daten > Neue Abfrage > Aus Datei > Aus Ordner (Excel 2013).
Es gibt auch Beispiele mit Windows Powershell-Skripten zum Zusammenführen von CSV-Dateien im Internet.
All dies führt zu einer einzigen Excel-Tabelle mit etwa 400.000 Datenzeilen, die für mich nutzlos ist.
Ich würde mich über Vorschläge zur Lösung dieses Problems freuen. Danke!
Bearbeiten. Es gibt eine einfache Lösung: Verwenden Sie cbind() von r, um die Daten in einem Datenrahmen zu kombinieren und sie dann in eine CSV-Datei zu schreiben. Der gesamte Vorgang dauerte ca. 3 Sekunden. Das richtige Werkzeug für diese Aufgabe!
Vielen Dank an alle für ihren Beitrag. Prost,
--tcollar
Antwort1
Beim „nativen“ Windows 10 bin ich nicht sicher, aber wenn Sie das Windows-Subsystem für Linux installiert haben, können Sie den UNIX- paste
Befehl verwenden, der die Dateien in der von Ihnen gewünschten Weise spaltenweise verketten sollte.
Antwort2
Verwenden Sie Ihre dritte Option: „Excel-Daten verwenden > Neue Abfrage > Aus Datei > Aus Ordner (Excel 2013)“
Klicken Sie auf die transform data
Option. Dadurch wird der Power Query-Editor geöffnet. Es wird eine Liste der Dateien angezeigt.
Durch Klicken auf die Schaltfläche in der Spaltenüberschrift content
können Sie eine Funktion erstellen, mit der jede einzelne CSV-Datei vor dem Anhängen umgewandelt werden kann.
Wählen Sie die richtige Tabelle oder das richtige Arbeitsblatt aus und führen Sie in der Funktion folgende Schritte aus transform sample file
.
- Fügen Sie die Spaltennamen in die erste Zeile ein, indem Sie „Kopfzeilen als erste Zeile verwenden“ verwenden.
- Transponierungstabelle
Anschließend werden in der Abfrage, in der die Funktion aufgerufen wird, die transponierten CSV-Dateien angehängt. Einfach transpose
die Tabelle wieder in ihre ursprüngliche Form bringen und umwandeln the first row to headers
.
Antwort3
Hier ist der R-Code zum Kombinieren von CSV-Dateien nach Spalten:
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)
Wenn Sie CSV-Dateien zeilenweise kombinieren möchten, ersetzen Sie sie einfach cbind
durch rbind
.
Bearbeiten: Zur Reihenfolge des Zusammenführens: Meine CSV-Dateien heißen etwa mycsv 001.csv
, mycsv 002.csv
, usw. Sie wurden genau in dieser Reihenfolge eingelesen und zusammengeführt, was für meinen Zweck großartig war.