100個までのCSVファイルを1つのExcelスプレッドシートに結合したい(すべてを1つのタブで、別々のタブではなく)。これらのCSVファイルは形式が同じです。それぞれに4,000行と2列のヘッダーが含まれ、サイズは約60 KBです。
これまでに見つけたすべての解決策は、アクティブなタブの最後の行の終わりに次のCSVを追加します。最後の列のすぐ右の列に新しいCSVを追加できるものを見たことがありません。
ここにいくつかの例があります。
DOSコピー方式:コピー* .csv merge.txt
このソリューション 。 (VBAスクリプト。)
Excelの[データ]> [新しいクエリ]> [ファイルから]> [フォルダーから(Excel 2013)]を使用します。
インターネット上のCSVファイルをマージするWindows Powershellスクリプトの例もあります。
上記のすべてが、約400,000行のデータを含む単一のExcelスプレッドシートを作成しますが、これは私には役に立ちません。
この問題を解決するための提案をいただければ幸いです。ありがとう!
編集。簡単な解決策があります。rのcbind()を使用して、データをデータフレームに結合し、それをcsvに書き込みます。プロセス全体に3秒ほどかかりました。仕事に最適なツール!
貢献してくれたみんなに感謝します。乾杯、
--tcollar
「ネイティブ」のWindows 10については不明ですが、Linux用のWindowsサブシステムをインストールしている場合は、UNIX paste
コマンドを使用できます。これにより、ファイルを列ごとに連結します。
列ごとに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
などのように名前が付けられています。それらは読み込まれ、そのシーケンスで正確にマージされました。これは私の目的にとって素晴らしいことでした。
3番目のオプションの使用: 'Excelのデータの使用>新しいクエリ>ファイルから>フォルダから(Excel 2013)'
クリックしてください transform data
オプション。これにより、パワークエリエディターが開きます。ファイルのリストが表示されます。
列content
のヘッダーのボタンをクリックして、追加する前に個々のCSVファイルを変換できる関数を作成します。
適切なテーブルまたはワークシートを選択し、transform sample file
関数。
次に、関数が呼び出されるクエリで、転置されたCSVファイルが追加されます。単にtranspose
テーブルを元の形に戻し、the first row to headers
。