String 选择表中包含字符串向量中一个名称的行
我正试图根据一列中的值来子集一个matlab表。我想选择多行,其中包含此字符串数组中的任何名称:names=[“Smith”、“Johnson”、“Wilson”]。下面有一个选择单个组件的示例,但我想知道如何从数组中选择 基于一个描述符选择的示例:String 选择表中包含字符串向量中一个名称的行,string,matlab,subset,String,Matlab,Subset,我正试图根据一列中的值来子集一个matlab表。我想选择多行,其中包含此字符串数组中的任何名称:names=[“Smith”、“Johnson”、“Wilson”]。下面有一个选择单个组件的示例,但我想知道如何从数组中选择 基于一个描述符选择的示例: load patients patients = table(LastName,Age,Gender,Height,Weight,Smoker); subset_patients = patients(strcmp(patients.LastNam
load patients
patients = table(LastName,Age,Gender,Height,Weight,Smoker);
subset_patients = patients(strcmp(patients.LastName, 'Wilson'),:)
我想做一些类似下面的代码的事情——在这里我选择所有包含名称的行。所以我会得到三行数据,每个名字一行
names = ["Smith", "Johnson", "Wilson"]
subset_patients_names = patients(strcmp(patients.LastName, names),:)
但是,此代码不起作用。请尝试而不是strcmp
:
>> subset_patients_names = patients(ismember(patients.LastName, names),:)
subset_patients_names =
3×6 table
LastName Age Gender Height Weight Smoker
_________ ___ ______ ______ ______ ______
'Smith' 38 'Male' 71 176 true
'Johnson' 43 'Male' 69 163 false
'Wilson' 40 'Male' 68 180 false
请注意,表patients
中的第一列包含字符向量,而names
是字符串数组。上述代码之所以有效,是因为正如ismember
的文档中所述
ismember(A,B)
:A
必须与B
属于同一类别,但以下例外情况除外:[……]
字符向量的单元格数组可以与字符数组或字符串数组组合