计数唯一嗨,我有一张包含如下交易数据的表格。
交易 ID、个人 ID、产品
1、一、苹果
2、一、橙
3、b、苹果
4、b、香蕉
5、c、橙
我想用表格而不是使用脚本来计算产品有多少唯一的个人 ID。
有谁知道如何做到这一点?
我可以先使用 individualID 和 product 做汇总表,然后对其进行制表以按产品获取 uniqueID 计数,但这是 2 个步骤。 想知道有没有一种方法可以在表格中做到这一点,因为我经常需要为许多不同的群体做这个?
谢谢!
分析数据表回复:计数唯一非常感谢。 这是生成用于计算唯一值和比例的表格结果的最有效方法。
回复:计数唯一还有另一种选择:您还可以在制表函数中创建一个汇总列:




Names default to here(1);
dt = Open("$Sample_data/big class.jmp");
dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table(
Analysis Columns(
Transform Column( "Age Count", Formula( Col Sum( 1, :age ) ) )
),
Statistics( Mean )
),
Row Table( Grouping Columns( :age ) )
)
);
回复:计数唯一非常感谢布雷迪! 这些真的是很棒的知识,我会练习每一个! 真的很感谢帮助!回复:计数唯一
运行上述查询后,我可以看到附加的 3 个绿色三角形。 要使用更新的数据重新运行相同的查询,我应该使用哪些三角形?
这取决于... “源”脚本在运行时会生成一个新表,而“从数据库更新”脚本会刷新当前表(即,不创建新表。)
注意:JMP 数据表的一个方便功能是,如果您将脚本命名为“打开时”,则只要打开包含它的 JMP 数据表,它就会运行。 因此,您可以将“从数据库更新”脚本重命名为“打开时”,以确保您始终从更新的结果开始。 当然,这个脚本仍然可以随时运行,只需单击绿色箭头即可。
如果我有许多不同的查询,我如何将它们存储在一个地方,然后当我获得最新数据时,再次对其应用查询?
有几种方法可以解决这个问题,我将提供一些最简单的方法。
- 如果您有没有衍生依赖的简单查询,您可以使用上面提到的“打开时”技巧。 (即,不需要在任何其他查询之前运行单个查询,以获得其表的正确结果)
- 您可以通过将每个脚本复制+粘贴到其中来创建“主”脚本。 顺序可能重要也可能不重要,具体取决于您的情况,您可能需要在脚本中插入控件以确保在继续之前完成先前查询的结果。
在实践中我不必做太多这样的事情,因此在新的讨论中向社区提出这个问题可能是值得的,以了解“该领域”实际上最流行的方法是什么,以及为什么。
干杯,
布雷迪
回复:计数唯一谢谢! 我刚试过,它有效!从没想过我可以使用 col sum 来实现这一点。 聪明的!回复:计数唯一谢谢! 这也是一种快速又好用的方法!回复:计数唯一非常感谢布雷迪!
从来没有使用过这个查询生成器,它超级强大!
我只是尝试获取 2 个源表并进行查询,它非常聪明,它自己匹配个人 ID 并返回正确的唯一计数。
查询生成器的 2 个问题:
1. 运行上述查询后,我可以看到附加的 3 个绿色三角形。 要使用更新的数据重新运行相同的查询,我应该使用哪些三角形?
2. 如果我有许多不同的查询,我如何将它们存储在一个地方,然后当我获得最新数据时,再次应用查询?
回复:计数唯一另一种选择是在原始数据表中使用带有“by”变量的 col sum() 函数的列来计算它,但引用数字 1 而不是列,这会将其转换为“count”函数。如果您需要表格或表格格式,则可以使用平均值或中位数制作表格:

回复:计数唯一似乎 Tabulate 平台在处理 Character 数据类型时表现不佳。 您可以将 individualID 更改为数字(重新编码或创建公式到新列),然后使用制表:

回复:计数唯一我不确定如何使用 Tabulate 来执行此操作,但如果您愿意使用其他平台,那么使用 JMP Query Builder 很容易做到这一点:
1) 从主菜单中选择表 > JMP 查询构建器。
2) 在随后出现的窗口中,单击位于窗口右下角的“构建查询”按钮。
3)在随后的窗口中:
- 双击产品列,将其投射到“包含的列”窗格中。
- 双击单个 ID 列,将其投射到“包含的列”窗格中。
- 右键单击 t1.product 列,现在位于“包含的列”窗格中,然后选择“Order By”。
- 从“包含的列”窗格中 t1.individualID 列的聚合字段的下拉菜单中,选择计数 DISTINCT。
- 在窗口底部,单击“运行查询”,生成一个包含我相信您所追求的表格。 (?)
干杯,
布雷迪