在 matlab 中查找行 table

Find rows in matlab table

我是 Matlab 的新手,很抱歉回答这个非常简单的问题。给定一个 table:

>> T = table(['MALE';'MALE';'FEMA';'FEMA';'FEMA'],[38;43;38;40;49],[71;69;64;67;64],[176;163;131;133;119])

T = 

    Var1    Var2    Var3    Var4
    ____    ____    ____    ____

    MALE    38      71      176 
    MALE    43      69      163 
    FEMA    38      64      131 
    FEMA    40      67      133 
    FEMA    49      64      119 

如何访问仅包含 'FEMA' 的行?

天真的,我会写成:

>> T(T.Var1 == 'FEMA',:)

获得

ans = 

Var1    Var2    Var3    Var4
____    ____    ____    ____

FEMA    38      64      131 
FEMA    40      67      133 
FEMA    49      64      119

您可以使用 ismember:

T(ismember(T.Var1,'FEMA','rows'),:)

仅供参考,您可以将 Var1 声明为元胞数组,而不是强制元素具有相同数量的字符:

T = table({'MALE';'MALE';'FEMALE';'FEMALE';'FEMALE'},[38;43;38;40;49],[71;69;64;67;64],[176;163;131;133;119])

然后你可以删除 'rows' 参数

T(ismember(T.Var1,'FEMALE'),:)
T2 = T(T.Var1=='F',:)

我假设您已经看过帮助,但这基本上是因为它是一个单元格而不是字符。 http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html

所以,如果你想匹配完整的字符串,使用字符串 comp

T2 = T(strcmp(T.Var1, {'FEMA'}),:)