我正在使用 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'。
什么?哪个未定义函数?什么是'eq'?
出色地。在阅读了一些关于表格的内容后,我了解到所谓的更高级别的 matlab 不会覆盖'=='。那是'eq',意思是平等。但错误消息肯定不提供信息。
然后我的第二次尝试。
T = readtable('example_data.csv', 'Delimiter',',','FileType','text','TreatAsEmpty',{'?'});
rows_attack = strcmp(T.VarClass,'attack');
T(rows_attack,2) = 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 转换为单元格。
我认为这个 matlab 表类似于 R data-frame 或 python pandas DataFrame。好吧,当然不是。有人可以指导我如何解决这个问题吗?