对列进行规范化简而言之:如何将一列规范化为自身?
请查看附件。我有:
- A列 = 0、1、2、3。可以把它想象成一个ID号码。
- B列。可以把它看作是一个时间戳。
- C列。这是数据。
现在我希望只有当 B=1 时,D 列才包含 C 列中的数据。
如附件所示,我已手动将 C 单元格中的黄色单元格复制粘贴到 D 单元格中,并反复粘贴。

因此,当我进行 D/C 计算时,我实际上是将整个 C 列归一化到这些特殊的黄色值。我这样做的目的就是为了计算 D/C 值。所以,该列中的值为 0.9 表示 C 列的值低于黄色 C 列的值,而值为 1.1 则表示 C 列的值高于黄色 C 列的值。
简而言之,D 中应该填入什么公式才能得到黄色值?
自动化和脚本编写基础数据分析与建模回复:规范化列编辑
抱歉,我需要更仔细一些。你问的不是如何断开连接。
选择 C 和 D,然后右键单击。新建公式列 > 合并 > 比率(反向排序)

回复:规范化列如果我理解有误,请见谅。如果您希望当 B 不为 1 时 D 为空,而当 B 为 1 时 D 具有 C 的值,请尝试以下公式。
Choose( :B, :C, . )
回复:规范化列谢谢你的回答。不完全是这样。我只是想要一个放在D列的公式,能够重现这些数字。
该公式会将 C 列中的黄色单元格应用于整个 D 列。这样,D 列就变成了如图所示的重复黄色单元格。(大概在公式的某个地方,我们会硬编码 B=1。)
可能是我在示例中手动输入了 D,导致事情变得复杂了。我是手动输入了那些数字,但我想要一个能自动计算 D 的公式。
回复:规范化列谢谢你的回答,但这里我对比一下你的答案和我想要的答案(我想要的只是一个关于D的公式)。比较最后一列和D值,你会发现它们并不相同。

回复:规范化列Isn'1 是公式吗?
If( :B == 1, 1, :D / :C )

回复:规范化列我相信肯定有办法通过脚本解决这个问题,但我建议在这种情况下,将数据格式从“长条形”切换到“宽条形”可能更合适。使用 JMP 公式时,如果计算所需的所有项都在同一行,操作起来总是最方便的。(有时这是不可能的,这时就需要巧妙地编写脚本。但就目前的情况而言,这样做是可行的。)
我的建议:将数据表拆分成宽格式,每个“B”值对应一列。这样,归一化(除以C)就很容易了。

您可以重新编写列名,使其更易于阅读:

添加新的公式列后,最终结果如下:

这样可以吗?表格附在后面供您参考。
回复:规范化列使用分组列聚合(例如col Median())来定义 D 列的值。
Col median(if (:B==1,:C), :A)
您也可以跳过 D 列,直接计算:C/分母。
应用商店里有一个插件可以自动执行这种规范化操作。
回复:规范化列不,我想找到D的公式。在我的例子中,我只是手动输入了D的数字,但我想要的是一个公式。回复:规范化列有什么问题?
Col median(if (:B==1,:C), :A)
?
回复:规范化列Hogi,这就是解决方案!谢谢!有点奇怪,我得用“中位数”函数,因为根本找不到中位数,但我明白它的原理了。谢谢!我也会看看 Marketplace Addin。
回复:规范化列谢谢!这个方法确实有效,但是当数据集很大时,对人来说查看起来有点笨拙。Hogi 的回答更简洁,不过还是谢谢你的建议!