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