数据表的大小各有不同。有时,我会使用尺寸足够小的表格,方便在屏幕上显示:无需滚动,所有需要的内容都能一览无余。然而,大多数情况下,我的数据表又高又宽,内容复杂,而且面面俱到。对于这类表格,JMP 中全新的数据表组织和筛选工具显得尤为出色。让我们通过一些实际数据来探究其中的原因。
我一直是openfoodfacts.org的忠实粉丝,它是一个“由每个人创建、服务于每个人的食品产品数据库”。你可以在其网站上找到几乎所有食品的详细信息,但我最喜欢的是它提供了多种不同格式的 数据库导出功能,包括 CSV(从技术上讲,它是 TSV,一种制表符分隔的文件,但 JMP 也可以毫无问题地打开它们)。

然而,这个文件可不是胆小鬼能搞定的!未压缩的 CSV 文件大小为 11.6GB,包含超过 400 万行数据,共 243 列(截至 2025 年 9 月;数据库持续更新)。这类表格通常难以浏览,但 JMP 中的一些新工具让一切井井有条。让我们先从整理这 243 列开始。
组织列
最大化列表

我要做的第一件事是最大化数据表中的列列表,这是 JMP 的一项新功能。这个功能虽然简单,但非常实用!实际上,左侧的任何工具都可以最大化,以便您可以看到更多工具。除了列列表之外,如果您有大量的表脚本,最大化某个区域的功能也尤其有用。
分层(嵌套)列组
JMP 长期以来一直支持对列进行分组,但在 JMP 19 中,我们可以进行多级分组以保持列的井然有序(奖励:列脚本也是如此)。
对于此表,我将首先通过选择要分组的列来对相似的列进行初始分组,然后在列表上单击鼠标右键,然后选择“分组列”。
在这么大的表格中,分组过程需要花费一些时间和精力,但经过第一轮分组后,我们的表格看起来已经更加井然有序了。

因为我们可以有多个级别的分组,所以我们可以更进一步,将这些列组放入组中。
为此,我将选择类似的列组,然后再次右键单击将这些组分组为更大的元分组,包括标识和元数据(这些定义了记录是什么以及如何跟踪记录)、产品标识和分类(这些描述了产品的“谁和什么”)、来源和出处(产品来自哪里以及如何制造)、成分和配料(产品中包含什么)以及营养和消费(它为消费者提供什么以及数量多少)。
进一步分组后,我们的列列表变得更加整齐,查找特定类型的列也变得更加容易。您可能还会注意到,分组显示在表头中,这有助于我们跟踪每列位于哪个部分。

如果您想在网格中特别注意一组列,可以右键单击表格中的标题组来设置该组的背景颜色。这里我将针对营养信息列组进行此操作。


注意:对于深度嵌套的表格,您可能需要关闭表头中各组的显示。您可以点击表格左上角的红色三角形,然后点击“显示选项”>“显示表头组”,来编辑表头中显示的内容。

列标签
在 JMP 19 中,我们引入了列标记的概念。您可以在列列表的底部找到新的“列标记”区域。除非您的数据表中包含列标记,否则此区域默认关闭。

首先,我们来谈谈什么是标签。列组和列标签在组织数据表时起着不同但互补的作用。列组是结构性的:它们要求列是连续的,并且实际上决定了表格的物理排列方式,就像书中的章节一样。相比之下,标签是一种灵活的叠加层,可让您从概念上组织列,而无论它们位于表格中的哪个位置。
标签可以将不同类别的营养相关列(例如,过敏原和基本营养区域)合并起来,也可以完全跨类别显示,例如突出显示“最重要的列”或“百分比列”,让您可以一次性收集、选择和查看所有列。这种灵活性使标签不仅成为一种组织辅助工具,更是一个强大的分析工具。因为在后续筛选或聚焦分析时,您可以直接操作带标签的列集,而无需在组结构中费力搜索。
对于这些数据,我发现一些不同的标签特别有用:
- 收藏夹:我使用的整体标签,用于筛选出我最常用的小组列。
- 常量营养素:用于仅挑选碳水化合物、蛋白质和脂肪列的标签。
- 维生素:所有营养细节中仅针对维生素列的标签。
创建标签
我们可以通过选择列表中的一列或多列来动态创建和分配标签,右键单击>标签>添加标签...
我们还可以在应用标签之前,点击“标签”区域中的“+”按钮来创建标签。我发现,当我要在表格中使用很多标签时,这个功能非常有用;我还可以提前创建标签,以便以后轻松应用。导入之前创建并存储在“首选项”中的标签时,我也会这样做(稍后会详细介绍)。
我先从“宏量营养素”标签开始。我在列表中找到并选择碳水化合物、蛋白质和脂肪列,然后右键单击其中一列 >“标签”>“添加标签”……
此对话框中唯一必须完成的项目是标签名称,但我决定同时设置标签颜色和描述。

因为我设置了标签颜色,所以我可以在数据网格和列表中看到标签图标。我发现这有助于在表格中滚动时识别这些列:

接下来我将制作维生素标签,这次使用标签区域中的 + 按钮。

它会创建一个标签,该标签会列在表格的“标签”区域中,但在我添加之前,不会有任何列与此标签关联。我将选择 11 个“维生素”列,在列表中右键单击其中一个,然后选择“标签”>“维生素”。

最后,我将创建我的收藏夹标签。我将再次使用“列标签”区域中的“+”,并为此标签设置一个星号表情符号。此表情符号将显示在表格网格和列表中设置此标签的位置。

我需要将此标签设置在几个不同的列上。首先,我想将它设置在我所有的“宏量营养素”列上,因此我会在标签区域中点击该标签,这将选中表格中的所有列(这真是个好技巧!)。选中这些列后,我会在列表中右键单击其中一列,然后选择“标签”>“收藏夹”。

请注意,列可以应用许多标签,这反映了概念分组经常重叠的事实。
我还想将另外几列标记为收藏,包括产品名称、总卡路里(在此表中名为 energy-kcal_100g)以及产品所属的类别。要设置这些标签,我只需找到这些列,在列表内单击鼠标右键,然后选择“标签”>“收藏夹”。
使用标签
标签设置完毕后,我们就可以开始在日常工作流程中使用它们了。以下是我最喜欢的几种标签使用方法:
选择列:点击标签列表中的标签名称,即可在表格中选择关联的列。这类似于选择感兴趣列的快捷方式。
按标签投放列:启动平台时,您可以点击标签列表,将标签投放到角色,而无需花时间寻找所需的列。该标签中的列将填充给定的角色。

过滤列表和表格:我最喜欢的标签用法之一也是最简单的用法:使用标签过滤表格中的列列表。为此,请点击列表右上角的过滤按钮,然后从列表中选择一个标签。我将选择“收藏夹”标签,这样网格和列表现在只显示那些已标记为“收藏夹”的列。我们可以返回过滤器图标清除该过滤器或将其他标签添加到列表中。默认情况下,带有任何选定标签的列都会显示在表格中,但您可以选择“高级…”来设置更复杂的条件(例如,要求列必须带有所有选定的标签才能显示在表格中)。

借助 JMP 19 中的嵌套组和标签功能,我们将这 243 列整合到一个井然有序、易于导航的视图中,从而适应我们对表格的不同用途。接下来,我们将重点介绍如何导航和处理这张表格中超过 400 万行的数据!
过滤数据:动态子集
JMP 现在包含筛选视图,其作用类似于数据表的动态子集,让您可以将已从报表中了解的数据筛选功能的强大功能直接带入数据网格。筛选视图不是仅筛选图形或分析中显示的内容,而是控制表格本身中实际可见的行。您指定条件,只有匹配的行才会保留在视图中,从而为您提供清晰、集中的数据片段以供处理。由于筛选视图可以保存,因此它们会随表格一起移动,从而可以轻松地在同一数据集上设置多个视角并在它们之间快速切换。实际上,它们将您的表格变成了一种迷你数据库:您可以划分出感兴趣的子集,稍后返回它们,并将它们用作更深入探索和分析的起点。
创建过滤视图
创建新的过滤视图有两种方法:
- 单击数据表的“过滤视图”选项卡中的 +(位于左上角)。

- 将鼠标悬停在列标题上时,点击过滤器加号图标。如果您尚未打开过滤器视图,则会打开一个新的过滤器视图。或者,如果您已打开过滤器视图,点击此图标会将此列添加到用于过滤表格的列列表中。

首先,我将单击类别列上的过滤器加号图标,以便我可以将表格过滤为仅某些种类的食物。

如果您以前曾在 JMP 中使用过数据过滤器,您会在这个新的临时过滤器视图中的表格右侧认出它(该视图是临时的,因为我们尚未保存它)。
我将类别列设置为非结构化文本,这样我就有了一个自由文本输入字段,可以用作搜索框。我输入了“零食”,并将筛选条件设置为仅显示属于零食类别的产品。在本例中,类别描述中大约有 24.4 万行与零食匹配。
如果我想在此视图中添加其他筛选器,可以点击筛选器中的“与”按钮,或者将鼠标悬停在要添加的其他列上。我将“卡路里(能量-千卡_100克)”列添加到筛选器中,并将范围设置为 50-250。我还将“蛋白质(蛋白质_100克)”添加到筛选器中,并将范围设置为 5-10。

现在我们只剩下 2,612 行数据,比一开始的 400 多万行有所减少。虽然行数仍然很大,但比原始表格的可导航性要好得多,而且可能代表了我们想要进一步探索的表格中的一个重要子集。
使用过滤视图
对设置的过滤器满意后,我们可以点击表格顶部功能区中的“保存视图”按钮。由于我们可以为这个过滤视图命名,所以我会给它起一个描述性的名称,以便以后可以返回查看。

当我点击表格顶部功能区中的“X”时,此过滤视图会关闭,并返回到表格中的原始行。要恢复此视图,只需点击过滤视图选项卡中的名称即可。

使用平台时,过滤视图的工作方式与过去的本地和全局数据过滤器的工作方式相同:您看到的数据就是平台将分析的数据。
额外提示
标签具有超能力
标签中的列属性
除了帮助您组织和浏览表格之外,标签还可以包含列属性,例如“值顺序”、“值标签”或“单位”。您可以使用标签来存储您经常为列设置的元数据,这样当您遇到这些列时,只需设置一个标签,而不必设置许多不同的列属性。
要设置标签的属性,请在“标签”列表中右键单击该标签,然后选择“编辑”。然后,展开标签对话框的“列属性”部分,添加要为使用此标签的任何列设置的属性。
在本例中,我将为“维生素”标签设置一个列属性。由于所有这些“维生素”列的单位都是百克,因此我将为此标签设置“单位”属性,并将其命名为“每 100 克”。

现在,我所有的维生素列都从标签中继承了此列属性。要查看此属性,我选择其中一个维生素列,右键单击并选择“列信息”。
我们可以在列信息的列属性区域中看到,该列上现在有一个 Units 属性,旁边有一个彩色标签图标,表示该属性是从 Vitamins 标签继承而来的。
高级说明:如果需要,我们可以通过点击“复制本地”来覆盖此标签继承的列属性。这样,我们就可以定义一个仅用于此列的列属性版本,而不会破坏标签定义的列属性。虽然有时这样做很有用且必要,但我们建议您避免在不希望流经所有已标记列的标签上使用列属性,以确保数据表中所有内容在概念上清晰明了。

有很多强大的方法可以利用标签中的列属性,我们将在即将发布的博客文章中详细讨论这些方法。
保存标签以在不同的表中使用
首次创建标签时,标签只会保存在您使用它的表中。但是,标签通常在不同的表中很有用,尤其是在重复处理相同类型的数据时。为了节省时间,您可以将标签保存到您的首选项中,以便以后在不同的表中使用它们。

要将标签保存到您的偏好设置,请右键单击该标签,然后选择“保存到偏好设置”。我现在将“维生素”标签保存到我的偏好设置。
如果您想在新表中使用此标签,请在“标签”区域中右键单击,然后使用“从首选项导入…”选项。在空白表中,它如下所示:

将此标签导入新表后,我可以右键单击>编辑标签,看到我设置的所有设置和列属性都已保留:

单元格的多行编辑
有时单元格中会有大量文本,而增加列宽或行高则不方便或不切实际。
JMP 现在在数据表底部添加了一个多行单元格编辑器!只需点击网格左下角的灰色三角形即可显示多行编辑器。您在编辑器中所做的任何更改都会立即生效。您可以在使用后关闭编辑器,也可以在浏览表格时保持编辑器打开。

数据表从未如此强大
JMP 的最新版本将数据表从仅仅是一个包含行和列的容器,变成了一个可供探索的动态工作区。嵌套组可以控制数百或数千列的杂乱数据,标签可以在整个表格中分层组织概念,筛选视图可以动态地筛选出重要的行,从而使您的表格变得更加简洁、更易于导航,并且更加灵活。此外,JMP 还添加了诸如已保存标签、继承列属性和全新多行编辑器等便捷功能,最终打造出一套工具集,帮助您从最简单的数据集轻松过渡到拥有数百万行数据的庞大数据。
如果您曾经被庞大、复杂或混乱的表格所淹没,JMP 将带您体验秩序、清晰度和速度,以便您可以比以往更快地利用数据进行探索。
喜欢视频?点击此处观看。