让我们假设我们有下表mytable
:
Name id Factor Correct
___________________________________________ ________ _________ ____________
'Maria' '7324' 'x' 'Yes'
'Lina' '7827' 'x' 'Yes'
'Jack' '7831' '' 'No'
'Van' '7842a' 'x' 'No'
'Julia' '7842c' '' 'Yes'
我想从 mytable
中选择所有行,其中factor ='x'并纠正='yes',然后将它们分配到新表中。对于每列的类(例如,'Name'
列),我们有:
class(mytable.Name) = cell
我尝试了此代码:
newtable = mytable((mytable.Correct == 'Yes') & (mytable.Factor == 'x'))
并收到错误:
Undefined operator '==' for input arguments of type 'cell'
我尝试了第二种方法:
newtable = mytable((cell2mat(mytable.Correct) == 'Yes') & (cell2mat(mytable.Factor) == 'x'))
这次有错误:
Error using cat
Dimensions of matrices being concatenated are not consistent.
与"否"相比,"是"的大小不同。我正在考虑用" y"one_answers" n"重新分配"正确"列。但是,这不是我真正想要的。有任何建议吗?
由于您的表包含每个单元格中的字符数组,因此您可以与strcmp
进行比较以提取所需的行:
newtable = mytable(strcmp(mytable.Correct, 'Yes') & strcmp(mytable.Factor, 'x'), :);
产生以下内容:
newtable =
Name id Factor Correct
_______ ______ ______ _______
'Maria' '7324' 'x' 'Yes'
'Lina' '7827' 'x' 'Yes'
请注意,我将比较结果用作行索引,然后将:
用作列索引来选择所有列。您可以阅读此文档,以获取有关访问表中数据的不同方法的更多信息。