SPSS Molder常用函数简介
SPSS Molder软件包含多种功能丰富的函数,几乎涵盖了我们日常工作的各种需要,主要有信息函数、转换函数、比较函数、逻辑函数、数值函数、三角函数、概率函数、位元整数运算、随机函数、字符串函数、日期和时间函数、序列函数、全局函数、空值和Null 值处理函数、特殊函数等15大类,本附录将逐一介绍并说明其注意事项。
在本附录中涉及到的函数,具体的字段格式按照如下约定表示。
此外,本附录中的函数以函数、结果类型(整数、字符串等)和说明(如果有)各占一列的形式一一列举说明。
例如,对函数rem的说明如下。
1. 信息函数
信息函数用于深入了解特定字段的值。
它们通常用于派生标志字段。
例如,可以使用@BLANK函数来创建一个标志字段,以指示选定字段的值为空值的记录。
同样,可以使用存储类型函数(如is_string)来检查某个字段的存储类型。
2. 转换函数
转换函数可用来构建新字段和转换现有文件的存储类型。
例如,可通过将字符串连接在一起或分拆字符串来形成新字符串。
若要连接两个字符串,请使用运算符“><”。
例如,字段Site的值为"BRAMLEY",则"xx"><Site将返回"xxBRAMLEY"。
即使参数不是字符串,“><”的结果也始终是字符串,因此,如果字段V1为3,字段V2为5,则V1><V2将返回"35"(字符串而非数值)。
请注意,转换函数及其他要求特定类型输入(如日期或时间值)的函数取决于“流选项”对话框中指定的当前格式。
例如,要将值为Jan2003、Feb2003等的字符串字段转换为日期存储格式,请选择MONYYYY作为流的默认日期格式。
3. 比较函数
比较函数用于字段值的相互比较或与指定字符串进行比较。
例如,可以使用“=”来检查字符串是否相等。
字符串相等的验证示例:Class="class1"。
对数值比较来说,大于表示离正无穷更近,小于表示离负无穷更近,即所有负数均小于任意正数。
4. 逻辑函数
MOLDER表达式可用来执行逻辑运算,主要功能如下。
5. 数值函数
MOLDER包含许多常用的数值函数,主要功能如下。
6. 三角函数
三角函数以角度为参数或返回结果为角度,无论哪种情况,角度单位(弧度或度数)均由相关流选项的设置控制。
7. 概率函数
概率函数返回基于各种分布的概率,主要功能如下。
8. 位元整数运算
借助上述函数,可以按表示二进制补码值的位模式(其中位的位置N的权重为2**N)来操控整数。
位从0开始往上数,这些运算就好像是把整数的符号位向左无限延伸,因此,最高有效位前的所有位,正整数均为0,负整数均为1,注意:不能从脚本中调用位元函数。
9. 随机函数
以下函数用于随机选择项目或随机生成数值,主要功能如下。
10. 字符串函数
在
MOLDER 中可以对字符串执行以下操作:比较字符串、创建字符串、访问字符串。
在MOLDER 中,字符串是一对英文双引号("string quotes")之间的一组字符序列。
这里所用的字符(CHAR )可以是任何一个字母、数字字符。
这些字符已在MOLDER 表达式中使用反单引号并以'<character>'的形式声明过,例如'z'、'A'或'2'。
如果字符超出边界或为字符中的负指数,则结果将返回Null 值。
11. 日期和时间函数
MOLDER包含一系列处理含有字符串日期时间存储变量的字段函数,这些字符串变量代表日期和时间。
可在“流属性”对话框中指定具体到每个流的日期和时间格式。
日期和时间函数根据当前选定的格式来解析日期和时间字符串。
如果用两位数指定日期中的年(即未指定世纪),则Molder将采用“流属性”对话框中所指定的默认世纪,注意:不能从脚本中调用日期和时间函数。
日期和时间函数的主要功能如下。
12. 序列函数
对于某些操作而言,事件序列很重要。
Molder应用程序可使您处理以下记录序列:序列和时间序列、序列函数、记录索引、求值的平均数、总和以及对值进行比较等。
对于许多应用程序,每个通过流传递的记录可以看成是独立于所有其他记录的单个案例。
此种情况下,记录的顺序通常并不重要。
然而对于某些类别的问题,记录序列非常重要。
这些一般是发生在时间序列中的情况,其中记录序列代表事件的有序排列。
每条记录代表着时间中的某个特定时刻的快照,大部分最重要的信息可能并未包含在瞬时值中,而是包含在随时间的流逝、不断变更发展的方式中。
通过以下特征可以立即识别出序列和特殊函数:这些函数的前缀均为“@”;函数名称采用大写。
序列函数可以引用节点当前处理的记录、已通过节点的记录,甚至是尚未通过节点的记录。
序列函数可与其他MOLDER表达式组件自由组合,虽然某些函数对参数有所限制。
例如:您会发现了解自某一特定事件发生或条件为真以来的时间长度非常有用。
使用函数@SINCE可实现上述目的,例如:@SINCE(Income>Outgoings)函数返回最后一条满足此条件记录的偏移量,即在此记录之前满足条件的记录数。
如果条件从不为真,则@SINCE 返回@INDEX+1。
有时您可能需要在@SINCE所用的表达式中引用当前记录的值,此时可以使用函数
@THIS指定一个始终应用于当前记录的字段名。
若要找出最后一条满足Concentration字段值是当前记录两倍的记录的偏移量,可使用表达式:@SINCE(Concentration>2*@THIS(Concentration)),有时,当前记录的@SINCE函数的定义条件为真,例如:@SINCE(ID==@THIS(ID)),基于这种原因,@SINCE函数将不对当前记录的条件求值。
如果要对当前记录以及前面记录的条件求值,请使用类似函数@SINCE0;如果当前记录的条件为真,则@SINCE0返回值为0。
注意:不得从脚本调用@函数。
序列函数的主要功能如下。
13. 全局函数
函数@MEAN、@SUM、@MIN、@MAX和@SDEV用于处理所有已读取的记录(包括当前记录)。
但在某些时候,它可用于检测如何将当前记录中的值与整个数据集中的值进行比较。
如果使用设置全局量节点来生成整个数据集中的值,则您可在使用全局函数的MOLDER表达式中访问这些值。
例如:@GLOBAL_MAX(Age)返回数据集中的最大Age 值,同时表达式(Value-@GLOBAL_MEAN(Value))/@GLOBAL_SDEV(Value)将给出该记录Value和作为标准偏差的全局平均数之间的差,仅当设置全局量节点并计算出全局值后,方
可使用它们。
通过单击“流属性”对话框中“全局量”选项中的ClearGlobalValues按钮,您可以撤消当前所有全局值。
注意:不得从脚本调用@函数。
全局函数的主要功能如下。
14. 空值和Null值处理函数
借助于MOLDER,您可以指定在某个字段中用作“空白”或缺失值的特定值。
下列函数可用于处理空值。
注意:不得从脚本调用@函数。
在过滤节点中可以“填写”空值字段。
在过滤和导出节点(仅多种模式)中,特殊的
MOLDER函数@FIELD将指向正在检查的当前字段。
15. 特殊函数
特殊函数用于指示所检查的具体字段,或用于生成输入字段列表。
例如,当一次导出多个字段时,应使用@FIELD函数来指示“对选定字段执行导出操作”。
使用表达式log(@FIELD)来为每个选定字段导出一个新的日志字段。
注意:不得从脚本调用@函数。