我有大約 100 個 CSV 文件,我想將它們合併到一個 Excel 電子表格中(所有內容都在一個選項卡中,而不是在單獨的選項卡中)。這些 CSV 檔案格式相同:每個包含 4,000 行和 2 列(帶標題),大小約為 60 KB。
到目前為止我找到的所有解決方案都將下一個 CSV 附加到活動標籤最後一行的結尾。我還沒有看到可以將新的 CSV 附加到最後一列右側緊鄰的列中的工具。
這裡有一些例子。
DOS複製方法:複製*.csv merge.txt
這個解決方案。 (VBA 腳本。)
使用 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
函數中執行以下操作。
- 使用“使用標題作為第一行”將列名稱插入第一行
- 轉置表
然後在呼叫該函數的查詢中,附加轉置的 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 文件,只需替換cbind
為rbind
.
編輯:關於合併的順序:我的 csv 檔案被命名為mycsv 001.csv
、mycsv 002.csv
等。