按列而不是按行合併多個 CSV 文件

按列而不是按行合併多個 CSV 文件

我有大約 100 個 CSV 文件,我想將它們合併到一個 Excel 電子表格中(所有內容都在一個選項卡中,而不是在單獨的選項卡中)。這些 CSV 檔案格式相同:每個包含 4,000 行和 2 列(帶標題),大小約為 60 KB。

到目前為止我找到的所有解決方案都將下一個 CSV 附加到活動標籤最後一行的結尾。我還沒有看到可以將新的 CSV 附加到最後一列右側緊鄰的列中的工具。

這裡有一些例子。

  1. DOS複製方法:複製*.csv merge.txt

  2. 這個解決方案。 (VBA 腳本。)

  3. 使用 Excel 的資料>新查詢>從檔案>從資料夾 (Excel 2013) 。

Internet 上也有使用 Windows Powershell 腳本合併 CSV 檔案的範例。

以上所有內容都創建了一個包含大約 400,000 行資料的 Excel 電子表格,這對我來說毫無用處。

我很感激解決這個問題的建議。謝謝!

編輯。找到了一個簡單的解決方案:使用 r 的 cbind() 將資料合併到資料框中,然後將其寫入 csv。整個過程持續約 3 秒。適合工作的工具!

感謝大家的貢獻。乾杯,

--t領

答案1

不確定「本機」Windows 10,但如果您安裝了適用於 Linux 的 Windows 子系統,則可以使用 UNIX 命令paste,該命令應按照您要求的方式按列連接檔案。

答案2

使用第三個選項:“使用 Excel 的資料>新查詢>來自檔案>來自資料夾 (Excel 2013)”

按一下該transform data選項,這將開啟電源查詢編輯器。它將顯示文件列表。

點擊列標題中的按鈕以content建立一個函數,該函數可以在附加每個單獨的 CSV 檔案之前對其進行轉換。

選擇正確的表或工作表並在transform sample file函數中執行以下操作。

  1. 使用“使用標題作為第一行”將列名稱插入第一行
  2. 轉置表

然後在呼叫該函數的查詢中,附加轉置的 CSV 檔案。只需將transpose桌子恢復到原來的形狀並提升即可the first row to headers

答案3

這是按列組合 csv 檔案的 r 代碼:

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)

如果您想按行合併 csv 文件,只需替換cbindrbind.

編輯:關於合併的順序:我的 csv 檔案被命名為mycsv 001.csvmycsv 002.csv等。

相關內容