如何使用具有 1000 个 ID 的单独数据集来过滤数据集(子查询、脚本)我有一个包含几百万行的“大”数据集。 每行都有一个特定的 IDENT 字段。 IDENT 可能会发生多次。 我有另一个较小的数据集“SMALL”,其中仅包含数百行。 每行还有一个特定的 IDENT 字段。
现在我只想保留 BIG 中的所有行,这些行在 SMALL 中具有相同的 IDENT。 换句话说:如何使用 IDENT 字段从 SMALL 中过滤 BIG。 使用 SAS SQL,这很容易,例如
过程 SQL ;
创建已过滤的表
作为从 BIG 选择 *
其中 IDENT 中(从 SMALL 中选择 IDENT);
辞职 ;
我可以在 JMP 中执行类似操作吗?
亲切的问候
新手
回复:如何使用具有 1000 个 ID 的单独数据集来过滤数据集(子查询、脚本)在 JSL 脚本中,它看起来像这样:
data table ("Big") << join (with(data table("Small")),
by matching columns (::ID=:ID),
drop mutiples (0,0),
include nonmatches(0,0),
preserve main table order(1)) ;
小心可能的小错别字...
回复:如何使用具有 1000 个 ID 的单独数据集来过滤数据集(子查询、脚本)如果您以交互方式运行联接,则可以转到刚刚创建的数据表,右键单击数据表左边缘表面板中绿色三角形旁边的“源”项,然后选择“编辑”。它将向您显示用于创建连接数据表的 JSL。
回复:如何使用具有 1000 个 ID 的单独数据集来过滤数据集(子查询、脚本)我感谢您的努力,但我对脚本答案感兴趣,而不是交互式解释。
回复:如何使用具有 1000 个 ID 的单独数据集来过滤数据集(子查询、脚本)亲爱的Newbie2Jumpie,
这可以通过多种方式实现。 这取决于您是想创建新表还是只想过滤。 让我们开始创建一个新表(检查您是否有足够的 RAM):
- 在 JMP 中打开两个表
- 在表格菜单中,您可以选择“加入”,您可以根据需要执行数据库连接操作,如下所示

3. 按“确定”,您将得到一个缩短的新表格,并且可以关闭其他两个表格。
您可以使用菜单“表”->“JMP 查询生成器”来实现类似的效果,但是,您还有更多选项,例如在数据库查询生成器中,除了源脚本之外,您还可以获得更新脚本和其他可用于更改查询选项的选项。 (附上一个例子来说明这一点(Big Class.jmp、ID_Table.jmp、SQLQuery1.jmp)
另一个选项允许您动态过滤:使用链接/引用表,又称虚拟联接。 在引用的表中,您需要一个与大表中的 id 名称相同的列,以及与小表的 ID 列内容相同的另一列(因此实际上是相同 ID 列的两倍,只是名称不同。 (请看第二个例子。 在小表中,指定与大表中同名的 ID 列作为链接 ID(右键单击列和链接 ID)。 在大表中,右键单击 ID 列并选择链接引用,然后选择小表作为参考。 您现在可以在大表中将小表的所有列可视化为隐藏列。 现在,您可以过滤第二个 ID 列,该列仅包含小表中的条目。 这将排除所有其他行,因此仅考虑感兴趣但在不同表中列出的那些行。