Matlab2015b を使用しています。そして、単純な csv ファイルをテーブルに読み込んで、その文字列値を対応する数値に変更したいと思います。
次のサンプルデータがあります。
Var1, VarClass
1 , attack
2 , normal
1, attack
この文字列値を数値に変更したいと思います。たとえば、攻撃 = 1、通常 = -1 です。
私の最初の試み。
T = readtable('example_data.csv', 'Delimiter',',','FileType','text','TreatAsEmpty',{'?'});
rows_attack = strcmp(T(:,2),'attack');
T(rows_attack,2) = 1
rows_normal = strcmp(T(:,2),'normal');
T(rows_normal,2) = -1
次のエラーが表示されます。
タイプ 'cell' の入力引数に対して未定義の関数 'eq'。
何?どの未定義関数? 「イク」とは?
良い。テーブルについていくつか読んだ後、おそらくより高いレベルのmatlabが「==」をオーバーライドしないことがわかりました。それが平等を意味する「eq」です。しかし、エラーメッセージは確かに有益ではありません.
それから私の2回目の試み。
T = readtable('example_data.csv', 'Delimiter',',','FileType','text','TreatAsEmpty',{'?'});
rows_attack = strcmp(T.VarClass,'attack');
T(rows_attack,2) = 1
今回は、
テーブルへの割り当ての右側は、別のテーブルまたはセル配列でなければなりません。
良い。わかった。テーブルが欲しい。私はそれを1つあげます。
T = readtable('example_data.csv', 'Delimiter',',','FileType','text','TreatAsEmpty',{'?'});
rows_attack = strcmp(T.VarClass,'attack');
rows_attack_size = sum(rows_attack);
data_to_fill = ones(rows_attack_size,1) ;
T(rows_attack,2) = array2table(data_to_fill);
良い。今回のエラーメッセージは。
double から cell への変換はできません。
この matlab テーブルは、R のデータ フレームや python pandas の DataFrame に似ていると思いました。確かにそうではありません。誰かがこの問題を解決する方法を教えてくれますか?