xlsreadをre​adcellに置き換​え時の空白データの処​理

37 ビュー (過去 30 日間)
Mamoru Mabuchi
Mamoru Mabuchi 2020 年 11 月 12 日
コメント済み: Kotaro Shoji 2022 年 10 月 5 日
xlsreadをreadcellに置き換えた時の空白処理について、教えていただきたいです。
[~,~,raw]= xlsread(xlsfile_name,sheet_name);
↓置き換え
raw= readcell(xlsfile_name, 'Shhet', sheet_name)
上記置き換えを実施したのですが、エクセルのデータに空白があると、
’missing’になってしまいます。
xlsreadと同様に'NaN'にするには、どのようにすれば良いですか?
  2 件のコメント
Kotaro Shoji
Kotaro Shoji 2022 年 10 月 5 日
私も同じ問題に直面したのですが、cellfun関数を利用することで、readcellで読み取った際に"missing"となるすべてのセルをNaNに置き換えることができました。
具体的には以下の処理になります。
raw= readcell(xlsfile_name, 'Sheet', sheet_name);
raw(cellfun(@(x) all(ismissing(x)), raw)) = {NaN};
投稿からだいぶ時間が経過しているので、未だニーズがあるか分かりませんが、ご参考になれば幸いです。

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

回答 (3 件)

Mamoru Mabuchi
Mamoru Mabuchi 2020 年 11 月 12 日
エクセルファイルが、1行目に変数名、2行目以降にデータが入っているため、
そのまま読める(読み込み後の変数の型が同じ)ので、readcell関数を選択しました。
他の方法としては、下記を考えていますが、その他に簡単に変換する方法はありますでしょうか?
readtableで読み込み開始行を1行目に指定  → table2cell で型変換

Akira Agata
Akira Agata 2020 年 11 月 12 日
1行目に変数名、2行目以降にデータが入っているということであれば、readtable 関数が適しているかと思います。もし変数名が日本語などの場合は、以下のように 'PreserveVariableNames' オプションを true に設定することでうまく読み取れるかと思いますがいかがでしょうか?
T = readtable(xlsfile_name,'PreserveVariableNames',true)

Mamoru Mabuchi
Mamoru Mabuchi 2020 年 11 月 13 日
編集済み: Mamoru Mabuchi 2020 年 11 月 13 日
アドバイスありがとうございます。
読み込んだ後の処理の都合により、xlsreadで読み込んだ時と同じ値、同じ型、同じサイズにしたいです。
試しにreadtableで読み込んだ値を下記にて変換しました。
raw = [raw.Properties.VariableNames ; table2cell(raw)];
読み込んでいるエクセルファイルには、1行目に変数名、2行目以降にデータのものもあれば、2行目に変数名、3行目以降にデータのものも混在しております。
後者の場合、上手く変換できず、困っています。
読み込んだ後のデータ開始行もxlsreadで読み込んだ時と同じにしたいです。
また、読み込み後にisnan関数を使って判定をしているので、空欄をNaNで埋めたいです。
アドバイスいただけないでしょうか

製品

Community Treasure Hunt

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

Start Hunting!