150万行の行列の一行目にラベルを追加し、csvファイルで保存する方法に関して
27 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NS
el 21 de En. de 2020
Editada: Musashi Ito
el 22 de En. de 2020
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万行のデータの書き込みはできないため。
お力添えをお願いします。
0 comentarios
Respuesta aceptada
Musashi Ito
el 22 de En. de 2020
Editada: Musashi Ito
el 22 de En. de 2020
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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre 記述統計 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!