基于其他 6 个具有是/否值的列创建具有是/否值的列大家好,我正在使用 JMP 11.2.1。 在不使用脚本的情况下,有没有一种方法可以在数据表中根据其他 6 列的是/否值创建一个具有是/否值的新列? 基本上,如果其他 6 列中该记录的任何值是“是”,我希望新列中的记录具有“是”值,如果该记录的值都不是“是”,则我希望新列中的记录具有“否”值其他6列中的记录均为“是”。 谢谢。
回复:根据其他 6 个具有是/否值的列创建具有是/否值的列很高兴您发现了问题并解决了问题。
回复:根据其他 6 个具有是/否值的列创建具有是/否值的列吉姆,
感谢您的跟进。 我想到了。 我需要做一些事情:
- 我必须调整你的公式,因为我正在寻找“相反”的结果。 我对您的示例的意图是为第 7 列中的所有记录生成“是”值,因为 7 行中的每一行中至少存在一个“是”。 如果记录在所有列 af 中都具有“否”值,则返回“否”的唯一方法。
- 但这还不够,因为我的新专栏最初的值都是“否”。 我想知道参考列中的不同数据类型是否会导致匹配失败。 是的,当我尝试匹配具有字符数据类型的列时,数据类型被列为整数。 (我的原始源文件是从 SPSS 转换而来的,我忽略了列类型。)
- 我将数据类型更改为字符,并且还注意到正在使用值标签,因此“否”和“是”实际上是零和一。 我回到公式并更改了将“否”和“是”替换为 0 和 1,这就是它起作用的时候。
很高兴了解区分大小写和“:”协议。 对于 JMP 来说还是比较新的,而且我使用它的频率并不如我所愿。 再次感谢你的帮助。
罗伯特
回复:根据其他 6 个具有是/否值的列创建具有是/否值的列我列出的公式是没有疑问的。 有用。 请参阅下图和附件
可能的问题是您的数据可能混合大小写。 “不”不等于“不”,也不等于“不”。 如果是这种情况,那么我建议
If(
Uppercase( :A ) == "NO", "No",
Uppercase( :B ) == "NO", "No",
Uppercase( :C ) == "NO", "No",
Uppercase( :D</img> ) == "NO", "No",
Uppercase( :E ) == "NO", "No",
Uppercase( :F ) == "NO", "No",
Uppercase( "Yes"
)
另外,请注意每个列名称前面的“:”。 这对于 JMP 了解它需要按指定名称查看列非常重要
回复:根据其他 6 个具有是/否值的列创建具有是/否值的列谢谢你的想法,但似乎行不通。 每行都会在新列中返回“是”值。
按照逻辑,我认为它可能会反向工作 - 沿着列前进,如果 6 个“比较”列中的任何一列有“是”值,则应返回“是”值,如果6 列中没有“否”值。 然而,当我编辑公式时,每一行都返回“否”值。
回复:根据其他 6 个具有是/否值的列创建具有是/否值的列您所要做的就是创建一个新列,右键单击列标题,然后选择“公式”。 将弹出公式窗口。 双击“无公式”的位置,将弹出一个编辑器窗口。 将以下公式粘贴到窗口中。 在公式中,我使用字母 AF 来指定您所说的必须进行比较的 6 列。 只需将 AF 替换为列名称即可。
If(
:A=="No", "No",
:B=="No","No",
:C=="No","No",
:D=="No","No",
:E=="No","No",
:F=="No","No",
"Yes"
)
该公式的作用是沿着 6 列进行。 如果其中任何一个的值为“否”,则会将列值设置为“否”。 如果它们都不等于“否”,则该列的值为“是”