使用布尔函数

在这个演示中,我们将学习布尔函数以及 If 函数。我将打开一个脚本编辑器窗口。同样,键盘快捷键是 Ctrl+T,或者您可以转到“文件”菜单,使用工具栏。打开新的“脚本编辑器”窗口有很多不同的方法。让我把日志放在日志前面。回到“脚本编辑器”窗口,我将输入代码,将 x 的值赋给变量 x。然后我将继续初始化它。然后在新行中,我将进行比较。JSL 的功能之一是,我们可以通过比较运算符连接参数,并让 JMP 将它们视为单个子句。因此,如果我输入“小于 x 小于等于”,它将被一次性求值,而不是按顺序求值,因为当 JMP 看到这些比较运算符像这样串在一起时,它们被称为省略运算符。所以我可以运行那一行,当然,这是一个真正的比较,大于小于等于,所以我得到布尔值作为结果。现在,我们最常使用比较函数是在测试特定条件时,例如在If函数中。所以我要修改第一行,用一个替换,所以我将的值赋给x。然后,我将第二行完全替换为我的If语句。所以,如果在括号中,x小于逗号,返回的结果将是小于限制的字符串。这是一个简单的if/then语句。如果条件评估为真,我将返回这个结果。如果条件评估为假,我不会评估第二个参数,并返回一个缺失值。所以我要运行整个脚本。同样,键盘快捷键是Ctrl+R。所以,如果x存储的是值,那么它小于,我们得到这个结果。但是,如果我更改赋给 x 的值并运行整个脚本,我会得到那个缺失值,因为该条件不成立。同样,我们可以得到另一个结果。所以,如果条件不成立,我不会返回缺失值,而是返回另一个结果。在这里,我打开双引号并输入“超出限制”。如果我运行整个脚本,我会得到那个其他结果。因此,If 函数可以根据需要接受任意数量的条件和结果,并且如果所有条件的计算结果为假,您始终可以得到那个其他结果。在下一个示例中,我们将获取一个以年为单位的人员年龄表,并将其归类到埃里克·埃里克森的心理发展阶段之一。因此,我将返回“部分”中的日志,然后单击“年龄数据”。因此,我们有一些个人,我们希望将他们归类到这些心理发展阶段。因此,再次返回日志,我将单击“年龄到阶段脚本”。因此,日志中预先编写的脚本会将“新列”消息发送到数据表“年龄”,该列的标题为“阶段”,并且我们指定其数据类型为字符。创建列后,我们将使用 for each row 函数通过 If 语句填充该列。回想一下,一旦 JMP 在 If 语句中遇到真条件,则唯一需要评估的其他参数就是相应的结果。其他任何条件都不会被评估。因此,对于年龄为 的人,所有这些年龄比较结果均为真,但一旦我们评估“是”,则大于,我们就会返回“晚成”结果并继续下一行,因为我们是在迭代的上下文中执行此操作。这样一来,我们就不必对每个级别进行括号操作。我们可以直接说“如果它大于”,“如果它大于”,等等。有一点需要注意,如果你查看数据——在本例中,它们的分布非常均匀。但是,如果你查看数据并注意到,它倾向于在高端有很多观测值,或者在低端有很多观测值,那么这就是你想要开始分箱的分布的末端。因为如果有很多人的年龄大于数据表中的数值,那么在很多行中,数据表都会评估这一个条件,返回这个结果,然后继续迭代的下一步,而不是评估其他所有行。所以,任何行——再说一次,如果这是大多数人的年龄,那么只要找到真正的结果,你就可以通过进入下一次迭代来稍微加快脚本的处理速度。让我们继续运行脚本。你可以看到列是使用 If 语句创建和填充的。我们在这里要讨论的另外两种函数类型是逻辑函数和查询函数。因此,在很多情况下,你需要一次测试多个条件。你可以通过以逻辑方式组合条件来实现这一点。逻辑函数的一些示例包括 AND 和 OR 函数。AND 函数包含“与”运算符,可确保所有条件都成立。OR 函数包含竖线运算符,可确保至少一个条件成立。因此,我将使用包含“年龄到分期”脚本的脚本窗口,并将其清除。我将为 x 赋值分号,为 y 赋值另一个分号,然后我将所有内容输入到一行中,并让重新格式化程序进行清理。因此,如果在括号中,x 小于,则此处 OR 的运算符是竖线,竖线,如果 x 小于,则 OR y 大于,这就是我的条件。在那里输入一个逗号。如果其中一个或两个条件都成立,那么我将返回满足条件的结果。如果两个条件都不成立,我将以字符串形式返回结果,条件不满足。我会再次输入结束分号,提醒一下,我们认为这是最佳实践,但脚本结尾并非必须使用分号。我会继续右键单击重新格式化。这样,在我把所有内容都输入到一行之后,只需稍微清理一下即可。因此,如果我运行脚本,这两个条件中至少有一个为真,我希望得到第一个满足的结果条件。事实上,这就是我在日志中看到的结果。如果我需要两个条件都为真,我会用“与”符号替换竖线运算符。在这种情况下,只有一个条件为真,而不是两个条件都为真。所以我期望得到 else 的结果。当我运行它时,这就是我在日志中看到的结果。我提到的另一种函数是查询函数。有时您希望能够检查值的性质。例如,您可能需要知道该值是数字还是列表。有很多不同类型的值是可能的。在某些情况下,如果您尝试运行一个脚本,而变量中存储的值类型不正确,则可能会出现错误。因此,您需要确保查询该变量,并且脚本可能会以某种方式运行,具体取决于该变量中值的性质。因此,我将再次清除脚本编辑器的内容。在第一行,我将把一个矩阵赋值给 x。因此,我将输入 x(赋值函数),然后输入方括号、空格和逗号。这是第一行。空格是第二行。关闭方括号,输入分号,然后我将在 if 语句的上下文中执行此操作。我还想向您展示 JSL 中函数的自动完成功能。如果我输入函数的前几个字母。在本例中,查询函数都以字母 IS(代表 is)开头。然后按下 Control 键和空格键。我可以通过此列表向下箭头找到我想要的查询函数。在本例中,我将使用“Is Matrix”,然后按 Enter 键选中它,JMP 会帮我完成该函数。当然,我仍然需要打开括号,我将在其中输入 x,关闭括号,然后在 If 语句的右括号前输入一个逗号,然后使用相同的结果:满足条件、关闭双引号、逗号、打开双引号、条件不满足。让我使用箭头确保所有选项都已对齐,然后右键单击重新格式化。在本例中,x 存储的是一个矩阵。所以我期望得到第一个结果,当我运行脚本时,我确实得到了这个结果。不过,假设如果 x 存储的是字符串,我的脚本会执行不同的操作。这可能是用户输入,也可能是从数据表或其他地方检索到的。我要把这里的“矩阵”改为“字符串”,然后运行脚本。当然,我会得到 else 结果,因为条件判断为假。这里,你看到了一些布尔函数的例子,它们使用 If 函数来分箱数据,以及将 If 函数与逻辑函数和查询函数结合使用。