append several csv files into one

Hello to all!
I am trying to append some csv files into one file using the following code:
csv1 = csvread('2011_basehourlycurves_demand.csv');
csv2 = csvread('2012_basehourlycurves_demand.csv');
allCsv = [csv1;csv2];
csvwrite('combined_csv', allCsv);
However, when I try to call my data it appears the following error:
Error using dlmread
Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 1, field number 1) ==>
Which I guess is because one of my varible/columns is composed by a categorical variable.
How can I fix this error? I tried using textscan, but It was not working.
Thank you in advance!

4 Commenti

dpb
dpb il 20 Gen 2020
W/O the file to look at, it's just a guess...are there headerlines?
You can try readtable, but for real help you'll have to show us the file structure...
If the task is to just do a blind copy/catenate, send that job to the OS COPY command...of course, you'll then still presumably need to read the result so we're back to the starting point--"show us the file(s)".
As dpb commented show us your files so we can help you.
Never use csvread for content that contains text.
Are you doing power/electricity market analysis? Always interesting to see another Energy person in the Matlab space!

Accedi per commentare.

 Risposta accettata

Ahmed Makki
Ahmed Makki il 13 Giu 2020
Modificato: Walter Roberson il 13 Giu 2020
I applied the same script that you used to combine 8 csv files and it worked.
t1 = csvread('B155p1.csv');
t2 = csvread('B155p2.csv');
t3 = csvread('B155p3.csv');
t4 = csvread('B155p4.csv');
t5 = csvread('B155p5.csv');
t6 = csvread('B155p6.csv');
t7 = csvread('B155p7.csv');
t8 = csvread('B155p8.csv');
allData = [t1;t2;t3;t4;t5;t6;t7;t8];
csvwrite('combined_155.csv', allData);

1 Commento

csvread() will only work for data that is all numeric; the user had categorical data.

Accedi per commentare.

Più risposte (1)

If you're using a newer version of Matlab, you probably want to use readtable instead of csvread. Don't forget the file extension for your output file.
t1 = readtable('2011_basehourlycurves_demand.csv');
t2 = readtable('2012_basehourlycurves_demand.csv');
allDAta = [t1;t2];
writetable('combined_csv.csv', allData);

Community Treasure Hunt

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

Start Hunting!

Translated by