How can I add a column to a table based on each csv files name?

2 ビュー (過去 30 日間)
Jessica Dawson
Jessica Dawson 2020 年 5 月 4 日
コメント済み: Walter Roberson 2020 年 5 月 6 日
I want to write a bunch of csv files together and I am using the following code:
xx = table();
CSVfileNames = dir('*.csv');
for kk = 1:numel(CSVfileNames)
x0 = readtable(CSVfileNames(kk).name);
xx = [xx; x0];
oo=table2array(xx)
xlswrite('AllCSV',oo)
end
However, within the file I would like an additional column which has the csv file name.
So for example, the first 10 rows would be named the first csv file, the next 10 rows would be the next csv file name etc.
I tried
xx = addvars(xx,CSVfileNames,'Before','Var1');
- but this didnt work.
I am very new to Matlab so please bear with me! I found this code online and have adapted.

採用された回答

Walter Roberson
Walter Roberson 2020 年 5 月 4 日
filename = CSVfileNames(kk).name;
x0 = readtable(filename);
x0 = addvars(x0, repmat({filename}, height(x0), 1), 'Before', 'Var1', 'NewVariableNames', 'filename');
  3 件のコメント
Jessica Dawson
Jessica Dawson 2020 年 5 月 6 日
Hi Walter,
Thank you for your help with this. Initially this worked when I trialled for a small number of csv files, however, when I tried to combine over 70 files together, I now recieve an error message.
ERROR MESSAGE:
Error using tabular/addvars (line 106)
Unrecognized variable name 'Var1'.
Error in GroupCSVperCond (line 14)
x0 = addvars(x0, repmat({filename}, height (x0), 1),'Before', 'Var1', 'NewVariableNames', 'filename');
When looking at the x0 table, it seems the first row has become the variable column names (e.g NaN, which has meant there is nolonger a Var1). Is there a way to fix this? So the first row doesnt become the column names?
Thanks again for your help!
P.S I tried:
x0 =readtable(CSVfileNames(kk).name,'ReadVariableNames',false);
Walter Roberson
Walter Roberson 2020 年 5 月 6 日
'ReadVariableNames',false should solve the problem. However, before R2020a, you might want to do a detectImportOptions on the first file and pass those options to all of the readtable().

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEnvironment and Settings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by