Kombinieren Sie mehrere CSV-Dateien nach Spalten, nicht nach Zeilen

Kombinieren Sie mehrere CSV-Dateien nach Spalten, nicht nach Zeilen

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.

  1. DOS-Kopiermethode: copy *.csv merge.txt

  2. Diese Lösung. (VBA-Skript.)

  3. 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- pasteBefehl 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 dataOption. 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 contentkö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.

  1. Fügen Sie die Spaltennamen in die erste Zeile ein, indem Sie „Kopfzeilen als erste Zeile verwenden“ verwenden.
  2. Transponierungstabelle

Anschließend werden in der Abfrage, in der die Funktion aufgerufen wird, die transponierten CSV-Dateien angehängt. Einfach transposedie 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 cbinddurch 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.

verwandte Informationen