How can I merge tables of csv files into one file?

1 view (last 30 days)
I obtained data which are stored in 2000 csv files and I need to make(append) them one file. They have same headers for their columns. I attached two of the files. So, data from "log_table_1.csv" is to become the continuation of "log_table_0.csv" and so on until the 2000th one.

Answers (1)

Jake Gonzalez
Jake Gonzalez on 25 Sep 2018
Try something like this;
d = table();
fileNames = dir('*.csv');
for ii = 1:numel(fileNames)
d0 = readtable(fileNames(ii).name);
d = [d; d0];
end
See if that works.
  2 Comments
Jake Gonzalez
Jake Gonzalez on 25 Sep 2018
It's not the most elegant solution, as it will copy the contents of d over again everytime you need to concatenate. Thus, if you know the length of each file (seems to be 798 datapoints per file) then you should pre-allocate d in some way to try and save speed.
Peter Perkins
Peter Perkins on 1 Oct 2018
Another (faster) possibility is to read each table into a cell of a 2000x1 cell array
cellContainingTables{i} = readtable(...);
and then do this:
t = vertcat(cellContainingTables{:});

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!