matlab - 过滤 Matlab 表格中的单词(如 Excel 中)

标签 matlab matlab-table

在 Excel 中,您可以使用“筛选”功能来查找列中的某些单词。我想在 Matlab 中对整个表格执行此操作。

以Matlab示例表“患者.dat”为例;我的第一个想法是使用:

patients.Gender=={'Female'}

这不起作用。

strcmp(patients.Gender,{'Female'})

仅在一栏(“性别”)中工作。

我的问题:我有一个表,其中包含不同的单词“A”、“B”、“香蕉”、“苹果”……以任意方式分布在表的列中。我只想要包含“A”和“B”的行。

很奇怪我没有在 matlab“帮助”中找到这个,因为它看起来很基本。我查看了 stackedO 但也没有找到答案。

最佳答案

Matlab 中的可以看作是扩展的元胞数组。例如,它还允许命名列。

但是,在您的情况下,您希望在整个元胞数组中进行搜索,并且不关心的任何额外功能。因此使用 table2cell 进行转换。

然后您想要搜索某些单词。您可以使用 regexp 但在您提到的示例中 strcmp 也足够了。两者都可以立即在元胞数组上工作。

最后,您只需要查找逻辑搜索矩阵的行。

这里的示例从 Matlab 示例数据集中获取所有“男性”且状况“优秀”的患者的行:

patients = readtable('patients.dat');
patients_as_cellarray = table2cell(patients);
rows_male = any(strcmp(patients_as_cellarray, 'Male'), 2); % is 'Male' on any column for a specific row
rows_excellent = any(strcmp(patients_as_cellarray, 'Excellent'), 2); % is 'Excellent' on any column for a specific row
rows = rows_male & rows_excellent; % logical combination
patients(rows, :)

确实只打印出状况良好的男性患者。

关于matlab - 过滤 Matlab 表格中的单词(如 Excel 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463921/

相关文章:

Matlab: int32(2)/int32(3) 给出 1。如何得到正常的整数除法?

matlab - 动态使用结构

matlab - 显示带有行和列标签的矩阵

matlab - 从数组创建具有混合数据类型的表

Matlab `rowfun` 具有多个输出的函数: Safe to assume row order?

python - Python 的 "None"的 Matlab 等价物

matlab - 了解 Matlab 中的过滤器

image - 图像中的线检测