我正试图根据一列中的值对matlab表进行子集设置。我想选择多行,其中包含此字符串数组中的任何名称:names=["Smith","Johnson","Wilson"]。下面有一个选择奇异组件的例子,但我想知道如何从数组中进行选择。。。
基于一个描述符的示例选择:
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),:)
但是,此代码不起作用。
尝试ismember
而不是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
属于同一类,但以下例外:[…]字符向量的单元阵列可以与字符阵列或字符串阵列组合。