尝试使用加号 (+) 运算符添加数值时,是否曾对结果感到困惑? 也许您发现 Sum() 函数可以解决该问题,但从未真正理解它为何起作用。 在这篇博文中,我将解释 Add() 函数、加号 (+) 运算符和 Sum() 函数,以帮助您从脚本或列公式中获得所需的结果。

让我们从 Add() 函数开始。 您知道加号 (+) 是 Add() 函数的符号表示吗? 这是! 这意味着以下两个表达式完全相同:
1 + 2; //Returns 3
Add( 1, 2 ); //Returns 3
Add() 函数和加号运算符将值相加以计算总值。 参数可以是数字、矩阵或数字列表。
但是,如果其中一个值缺少数字 (.),该怎么办? 如果任何参数是缺失值,Add() 函数将返回缺失值。
在前面的示例中,任一表达式的结果都是 3。 在此基础上,如果参数之一是缺失值,那么它将返回缺失值,而不是 3。
1 + . + 2; //Returns missing
Add( 1, ., 2 ); //Returns missing
那么如何获得排除缺失值后的总值呢? 这就是 Sum() 函数的用武之地。 Sum() 函数也会将值相加来计算总值,但是,它忽略缺失值。
以下是 Sum() 函数的语法。 请注意,参数以逗号分隔,并计算所有非缺失参数的总值。
Sum( 1, ., 2 ); //Returns 3
Sum() 是否会返回缺失值? 嗯,是的,可以。 当提供给 Sum() 函数的参数为全部缺失值,结果也会缺失。 在此示例中,x 和 y 的值均缺失。
x = y = .;
Sum( x, y ); //Returns missing
并且不要误以为可以使用加号运算符来指定参数。
Sum( 1 + . + 2 ); ); //Returns missing
当你这样做时,联合管理计划将此视为使用 Add() 函数的一个参数。 请记住,当任何参数为缺失值时,Add() 函数将返回缺失值:
Sum( Add( 1, ., 2 ) ); //Returns missing
本质上与此相同:
Sum( . ); //Returns missing
如果您更改该示例以包含两个参数,例如:
Sum( 100, 1 + . + 2 ); //Returns 100
结果为 100,因为参数为 100 并且缺失,如下所示:
Sum( 100, . ); //Returns 100
我希望这有助于阐明 Add()、plus (+) 和 Sum() 的用法。
我记得当我第一次开始使用 JMP 时,这个主题让我有点困惑,因为“新公式列”下的默认添加函数是如果缺少任何值则返回缺失值的版本。 早在那个黑暗时代,我并没有意识到 JMP 社区有多么伟大,可以帮助解决这样的事情! 