150万行の行列の一​行目にラベルを追加し​、csvファイルで保​存する方法に関して

26 次查看(过去 30 天)
NS
NS 2020-1-21
150万行の行列データの一行目にラベルを追加し、csvファイルで保存したいと考えています。
保存された際に'NaN'は空にしたいです。
保存データのイメージ(SaveDataの一行目にlabelを追加し保存する)
label = {'label1', 'label2'};
data1 = (0:1:1500000).';
data2 = (0:1:1500000).';
data1(1) = NaN;
data1(2) = NaN;
data2(4) = NaN;
SaveData = horzcat(data1,data2); 
保存された際のcsvファイルの中身のイメージ
label1, label2
,0
,0
2,2
3,
4,4
5,5
.
.
.
1499999,1499999
1500000,1500000
普段はxlswriteを使用するのですが、xlswriteは150万行のデータの書き込みはできないため。
お力添えをお願いします。

采纳的回答

Musashi Ito
Musashi Ito 2020-1-22
编辑:Musashi Ito 2020-1-22
150 万行のデータの書き込みは writetable 関数を使用してできそうです。よってデータ型を table 型に変換する必要があります。table 型に変換すれば各行の名前も追加できます。
しかしながら、writetable 関数には NaN を空に変換するオプションがなさそうですので、どうしても空にしたい場合はプログラムを工夫する必要がありそうです。
例えば、以下のようなプログラムでしたら書き出せそうです。(時間がかかりますが・・・)
% 150万行2列のデータの作成
label = {'label1' 'label2'};
data1 = (0:1500000)';
data2 = (0:1500000)';
data1(1) = NaN;
data1(2) = NaN;
data2(4) = NaN;
SaveData = [data1 data2];
% table 型のデータ T に変換
T = array2table(SaveData);
T.Properties.VariableNames = label; % 各行ラベルを代入
% table データ内の数値データを cell 配列に変換
T.label1 = num2cell(T.label1);
T.label2 = num2cell(T.label2);
% セル配列内の NaN のところを特定して 空配列[] に置き換え
T.label1(cellfun(@isnan, T.label1)) = {[]};
T.label2(cellfun(@isnan, T.label2)) = {[]};
% table 型のデータ T を csv 形式で書き出し
% 書き出しに時間がかかります
writetable(T,'mydata.csv','Delimiter',',','QuoteStrings',true)
他にもっと良い方法があるかもしれないです。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 記述統計 的更多信息

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!