根据两列中的条件从表中选择行



让我们假设我们有下表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'  

请注意,我将比较结果用作行索引,然后将:用作列索引来选择所有列。您可以阅读此文档,以获取有关访问表中数据的不同方法的更多信息。

相关内容

  • 没有找到相关文章

最新更新