2017-03-06 6 views
2

私はカラムヘッダ(文字列)とデータを持つcsvファイルを持っています。特定のヘッダー'My new header'を持つ新しい列を追加し、データはmyNewDataと呼ばれる100x1のダブル変数に格納されます。ヘッダー'My new header'と列の値が新しい列を追加する方法はmyNewDataですか?csv Matlabにヘッダ付きの新しいカラムを追加

+0

これはそんなに簡単ではない場合導入さ'fopen( 'myFile.csv'、 'at')を使用してデータを追加するためにcsvファイルを開くと、新しい行にデータが追加されます。私はあなたがファイルを書き直す必要があります新しい列を追加すると思います。したがって、既存のファイルに 'fopen'と' textscan'を使って、 'fprintf'を使って新しいファイルに書くことができる文字列を連結します。おそらく、これが役立つかもしれません: http://stackoverflow.com/questions/27783802/adding-new-columns-to-a-text-file-on-matlab – Max

答えて

0

下図のように私は、コードのわずか3行でMATLABでこの使用してテーブルを行うことができました:

table = readtable('myfile.csv','Delimiter',','); 
table.class = newcol; %where class is the name of the header of the new column and newcol is a variable which has my new column data 
writetable(table,'myfilenew.csv','Delimiter',',','QuoteStrings',false) 
0

あなたは、新しい(または同じ)にデータを書き込む

  • をファイルimportdata
  • データとヘッダを変更して

    1. 読み取りデータとヘッダによってこれを達成することができます

    MATLABファイル交換のthis awesome functionを使用してデータを書き込むか、手動でfprintfdlmwriteを使用してデータを書き込むことができますここで は完全な例である:

    % Write test data 
    filename = 'myfile01.csv'; 
    fid = fopen(filename,'w'); 
    fprintf(fid,'col1,col2,col3\n1,2,3\n4,5,6\n7,8,9\n10,11,12'); 
    fclose(fid); 
    
    % Define new column 
    myNewHeader = 'My new header'; 
    myNewData = randi(9,[4,1]); 
    
    % Read test data and headers 
    filename = 'myfile01.csv'; 
    delimiter = ','; 
    headerlinesIn = 1; 
    A = importdata(filename, delimiter, headerlinesIn); 
    
    % Append new colum to data 
    data_new = cat(2, A.data, myNewData); 
    colheaders_new = [A.colheaders, myNewHeader]; 
    clear A 
    
    % Write the result to a new file (or the same) 
    filename_new = 'myfile01_new.csv'; 
    fid = fopen(filename_new,'w'); 
    fprintf(fid, '%s,', colheaders_new{1,1:end-1}); 
    fprintf(fid, '%s\n', colheaders_new{1,end}); 
    fclose(fid); 
    dlmwrite(filename_new, data_new, '-append', 'precision', '%u', 'delimiter', ','); 
    
    % Or, using the function from the File Exchange: 
    csvwrite_with_headers(filename_new, data_new, colheaders_new); 
    
  • +0

    ありがとう、私は最後の価値を得ることができますか? 'M = csvread( 'myfile.csv'、1,33、[1.33、Inf、33])'の選択された列 '?まず列を読んで処理しているときに、コードを使用/テストします。 – Tak

    +0

    あなたは 'M(end)'を意味しますか? – Richard

    +0

    いいえ、このコード行のように、1行目から終わり(csvファイルの行数)までの33列のすべての値を取得したい場合は、 'Inf'を使用して何か問題がありますので置き換えてください何かで – Tak

    関連する問題