分裂不好?假设我有这张表:
| 类别 |
物品 |
等级 |
| A |
1 |
三角洲 |
| A |
2 |
狐步舞 |
| A |
3 |
酒店 |
| B |
1 |
朱丽叶 |
| B |
3 |
五 |
请注意,缺少 Category=B、Item=2。
如果我尝试使用“拆分依据”=类别和“拆分列”=级别以及“保留全部”来“拆分”此表,它将返回以下内容:
| 物品 |
A |
B |
| 1 |
三角洲 |
朱丽叶 |
| 2 |
狐步舞 |
五 |
| 3 |
酒店 |
|
请注意,在新拆分的表上,它显示 Item=2,Category=B 是“lima”,但这是不正确的 - 该单元格应该是空白的,“lima”应该在 Item=3,Category=B 下。
这是用户错误,还是 JMP 中的错误?
数据混合和清理回复:堆叠不良?你好@BHarris ,请尝试使用群组中的项目。结果应该和你预期的一样。
最好的,
回复:堆叠不良?是的,这确实有效。
你能解释一下发生了什么吗?我想知道为什么集体行动是必要的。
回复:堆叠不良?当然,不进行分组拆分是按行逐字进行的,并且不会意识到项目缺少类别的组成部分。分组会先查看项目,然后再查看类别,从而强制级别按每个类别的项目进行拆分。
来自在线帮助( https://www.jmp.com/support/help/en/18.2/?os=mac&source=application#page/jmp/split-columns-in-data-tables.shtml
团体
当您希望在所选变量的每个组内拆分数据时,请指定“组”变量。每个组在输出表中生成一行。您还必须指定所需的变量、 “拆分依据”和“拆分列”。
注意:如果您要分组的变量包含不相等的组或处于随机顺序,则将其指定为组变量可确保您的数据正确重组,并将任何缺失的值分配到适当的位置。
否则,您必须添加额外的一行并定义类别和项目,但将该行的级别留空。
希望有帮助。
回复:堆叠不良?我越想越觉得这说不通。我不明白为什么 split 在任何情况下都会出现这种行为——就好像开发人员只是简单地嵌套了一些循环,然后希望数据会落在正确的位置一样……
我不知道(a)我是否仍然太笨,无法理解这种行为的根本原因,(b)以这种方式实现是为了提供高性能(在大表上快速拆分),其中输入是全阶乘,并且用户应该知道正在做出假设,或者(c)这真的只是一个需要提交/修复的错误。
(如果是(a),我不会生气。;) )
回复:堆叠不良?你能详细阐述一下你的想法吗?
我的观点是相反的:
如果输入数据结构良好,您可以进行拆分,而无需担心。
如果输入数据结构不太好 - 但另外还有一些分组信息,那么总是有可能使用这些分组信息来告诉 JMP 它应该做什么。
无效的方法:
用户知道分组信息(有列)但不会告诉 JMP(通过 GUI)。
那么 JMP 不使用分组信息也就不足为奇了。
[在其他情况下,JMP 会应用一些猜测 | 自动更正 - 而用户对其创造力感到疑惑]。
回复:堆叠不良?你对原问题提供的数据集有什么看法?它“结构良好”吗?
您对 JMP 在拆分该表时的当前行为有何看法?
我的理解是,“拆分依据”列指的是那些你想让值出现在新表列标题中的列,“拆分列”指的是那些你想让值出现在新列单元格中的列。我仍然不明白“分组”在这里是什么意思。
回复:堆叠不良?您的初始数据表“结构良好”。
分组概念可以从输入数据表中的哪些行被分组在一起来定义特定的输出行来考虑。
回复:堆叠不良?另一种解释方式:
您的“类别”和“级别”列(单独)结构不太好 - 需要一些额外的信息,例如
@BHarris写道:请注意,缺少 Category=B、Item=2。
告知其他人一个事实:第 5 行和第 6 行之间缺少了一些东西。
案例 #1:
用户没有告诉 JMP“Item”列的存在(“Item”在 GUI 中未使用**)
那么 JMP 就没有足够的知识来正确地完成这项工作。
案例 #2:
有第三个放置区。它允许用户使用
@BHarris写道:请注意,缺少 Category=B、Item=2。
以结构化的方式 - 作为分组列。
“分组”非常适合你想要的:
向 JMP 提供附加信息,以便将条目放入特定的行中,不是由输入数据的Rank(row()、Categories)决定,而是通过分组列进行分组。
**) 编辑:
“Item” 在 GUI 中使用- 通过保留全部隐式使用
但这太“被动”了——见下文。
回复:堆叠不良?@hogi——你在这里搞乱了一些东西,我没有在界面的任何地方包含 Item 列,因此这意味着 Split 算法可能甚至没有真正意识到它的存在。
我之前一直认为“拆分”操作中所有列都很重要,并且会尽可能保留所有关联关系,例如,“lima”也只与项目“3”关联。现在,我得想办法弄清楚,如果我选择“保留所有”,是否所有其他列也都应该作为分组列……
我希望有一天能成为 JMP 大师,彻底开窍,或许那时就能理解为什么 JMP 不隐式使用组角色中所有其他“保留”列。在那之前,我可能还会继续感到紧张,因为它在这些情况下的行为对我来说并不明显,在难以识别的情况下会导致错误的输出数据,而且文档记录也不够完善,我难以理解。至少这种紧张感会让我在以后使用时更加警惕。
谢谢。
回复:堆叠不良?你提到了这一点,但也许明确地写出来会有所帮助:
JMP 应用以下规则:
- 组:保留并用于分组
- 保持 :保留(〜不要掉落)
@BHarris写道:
现在,我试图弄清楚,如果我执行“保留全部”操作,是否所有其他列都应该分组列......
我猜是的。
您可以尝试两种方法,检查差异,然后再做决定。
Group 可以帮助你“结构化”数据。如果数据已经结构化,则不会造成任何影响。如果数据尚未结构化,Group 也能确保输出有意义的结果。
使用Keep 时,你必须非常清楚自己在做什么。以下是一些示例。
社区中的这些小讨论对理解有很大帮助——挑战和完善用户的知识。
这里收集了一些 JMP 新手在用户培训课程中遇到的“有趣”问题。我收集这些问题是为了帮助其他用户理解 JMP。很多问题只是一些修辞技巧——它们说明,有时候正是“JMP 俚语”让理解 JMP 逻辑变得并非易事。
@BHarris写道:
在那之前,它可能会继续让我感到紧张,因为它在这些情况下的行为对我来说并不明显,在难以识别的情况下会导致错误的输出数据,而且文档记录也不够完善,我难以理解。至少这种紧张感会让我在未来使用它时更加警惕。
我同意。“了解 JMP 在做什么”非常重要——并且要了解得足够详细,让用户感觉能够正确操作。不要紧张,也不要惊讶。如果发生意外,用户就会开始感到焦虑——JMP 还有哪些地方会做出意想不到的事情呢?!
也许 JMP 中有一个很棒的功能,但它会让用户感到烦恼或害怕 - 至少是那些没想到 JMP 能做什么的人......
绘制这些陷阱门的示意图可以帮助用户避开它们。每个 JMP 用户都应该拥有这样一张示意图,才能“安心”地使用 JMP。
即使细节有详细的记录 - JMP 非常强大,但同时文档又太少又太多!
这使得查找正确信息变得非常困难。LearnBot 现在让查找变得容易多了,但它仍然无法掌握所有细节。
回复:堆叠不良?保留但不分组的拆分极端情况

保持:名称(名称不用于分组)
由于两行合并为一行,许多“名称”丢失了。
第一个*) 项目获胜,因此我们从女性名字开始,所有男性名字都被删除。
全部都是男性名字?不——最后还剩下一些男学生。
*) 对于所有桌面平台来说,没有通用的规则:哪些值将被保留,哪些值将丢失。
Join 还保留第一个值(并且不关心后续值。
更新尝试保留每一个值,并且最后一个值“保留” - 这就是 Tables/Update 如此缓慢的原因(执行命令可能需要几个小时): 加速 Tables/Update
回复:堆叠不良?
@hogi写道:
第一个*) 项目获胜
哎呀...这仅适用于通过保持添加的列。
对于拆分列,拆分行为类似于更新:最后一个“坚持”。
我尝试用这个例子来说明这一点,其中我标记了“姓名”条目和最终数据集中出现的男女分割条目。可以看到:
- 通过保持(类似名称)添加的列:等级=1 (取第一个,跳过后续的)
- 通过拆分列添加的行(高度 --> M/F): RankReverse=1 (最后一个“坚持”)

回复:堆叠不良?该行为遵循逻辑,但人们可以争论该逻辑是否简单/是否每个用户都期望:)
我想知道默认保留所有选项是否正确?如果 JMP 以

...然后激活“保留全部”选项的用户可以查阅文档以确保它能满足他的要求。
JMP 甚至会显示警告: “您确定要使用 Keep 吗?最好使用 Group?”
底线:对于不使用该选项的用户来说,没有惊喜|焦虑。
比 Split: 表/更新危险得多
默认界面也以“全部”开头
a)添加列
b)替换列(!)
几年前,我认为编写一个插件来替换默认设置是足够危险的:

额外的好处:通过此更改,平台不会从尝试更新数千列的设置开始。
这使得它比原来的速度快几个数量级:)
https://community.jmp.com/t5/JMP-Wish-List/Speed-up-Tables-Update/idc-p/653334/highlight/true#M4531
回复:堆叠不良?我添加了主题到警告:Jmp 执行意外操作的地方

回复:堆叠不良?我希望有一天能看到一个动画来展示拆分(和堆叠)的操作。我设想拆分列的值会被推送到列标题中,而拆分列会被推送到这些新列的单元格中。(我刚才惊讶地发现,如果给定的拆分列有多个拆分列,则会创建新的编号列。)
但真正有趣的部分出现在发生冲突时,例如多个值试图出现在同一个单元格中。JMP 确实会发出警告,提醒这种情况发生(这很棒!),但这篇文章的出发点是一个看似正确拆分的数据集,但在我深入研究之后,我意识到事实并非如此,我忽略了那个警告,因为我不理解它的含义。
我认为,警告应该从:“要保留的列的多行(可能具有不同的值)映射到拆分表中的同一行。每列仅保留一个值。” ---> 更改为:“多个值映射到同一个单元格;仅保留一个。”
回复:堆叠不良?
@BHarris写道:
我刚才惊讶地得知,如果给定的拆分列有多个拆分列,则会创建新的编号列。
如果使用多个拆分列,JMP 会将拆分列的名称与按列拆分的条目组合来创建列名:

我只选择一列作为拆分列,拆分列的名称不包含在列名中:

当我开始使用 Big Class 来解释 JMP 的功能时,我的同事们都翻了白眼。
但使用替代数据集来玩设置是一个很棒的技巧:
通过“M”和“F”,很明显 JMP 正在做什么,无需怀疑原始数据集中出现的“数字”。
Big Class 看起来很简单,但它足够复杂,需要解释很多细节。
只是缺少共线性......