选择表中在字符串向量中包含一个名称的行



我正试图根据一列中的值对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属于同一类,但以下例外:[…]

字符向量的单元阵列可以与字符阵列或字符串阵列组合。

相关内容

  • 没有找到相关文章

最新更新