csvデータ 文字列

50 views (last 30 days)
文字化けのあるcsvデータをmatlabのreadtableを使用して読み込みました。
1つめのファイルでは文字化けしたセルはNaN と表示されるため、Rmmissingを使用して文字化けを削除することができました。
しかし、2つ目のファイルではすべてが文字列として読み込みされてしまい、数値と文字を分けることできませんでした。(添付資料参照ください)
文字化けをしていない、数値の入った行のみを取り出す方法はないでしょうか。
よろしくお願いいたします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 23 Feb 2022
>文字化けをしていない、数値の入った行のみを取り出す方法はないでしょうか
そのような解決方法の前に、csvファイルを正しいエンコードで読み込む事を試してみてください
rmmissing関数でNaNを削除する事は出来ても、文字化け部分を削除する事は出来ません(詳細は下記)
readtable関数であれば、下記の2通りを試してみてください。参考までに上記二種類のエンコードで作成したサンプルcsvファイル(漢字を含みます)を添付します。
readtable('yourFile.csv','Encoding','UTF-8');
readtable('yourFile.csv','Encoding','Shift_JIS');
(リンク先の少し上にある「Encoding — 文字エンコード スキーム」)
% エンコードを指定しない場合、関数 readtable は自動文字セット検出を使用して、ファイルの読み取り時にエンコードを判断します。
readtable関数には文字エンコードを自動で判断する事を期待しますが、何らかの理由で判断出来ないようです。
明示的にエンコードを指定して読み込めば、正しいエンコードを選択した時に可読文字で表示されるはずです。
Windows環境で普通にCSVファイルを作るとUTF-8 かShift_JISのどちらかになるはずです。(他のエンコードも有り得ます)
rmmissing関数の削除対象である「欠損エントリ」は、データ型によりNaN, NaT, <missing>, <undefined>, ' ', {''}と表現され、これは「何かが欠損している」事を示す値です。例えばCSVデータの表において一部項目が正常に認識されなかった場合、CSV読込関数はそこが欠損していた事を示すために欠損エントリで埋めておきます。
文字化けしたデータは不正な表記に見えますが、適切なエンコードで表示すれば正しいデータなのです。
  1 Comment
美紗子 馬渕
美紗子 馬渕 on 25 Feb 2022
大変わかりやすい回答をいただき、ありがとうございました。

Sign in to comment.

More Answers (1)

Hernia Baby
Hernia Baby on 22 Feb 2022
readmatrix uiopen ではいかがでしょうか?
  1 Comment
美紗子 馬渕
美紗子 馬渕 on 25 Feb 2022
ご回答いただき、ありがとうございました。
今回は原因まで丁寧に解説していただいた方の回答を採用させていただきました。申し訳ございません。

Sign in to comment.

Categories

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!