SPSS Modeler常用函数简介
SPSS Modeler软件包含多种功能丰富的函数,几乎涵盖了我们日常工作的各种需要,主要有信息函数、转换函数、比较函数、逻辑函数、数值函数、三角函数、概率函数、位元整数运算、随机函数、字符串函数、日期和时间函数、序列函数、全局函数、空值和Null值处理函数、特殊函数等15大类,本讲义将逐一介绍并说明其注意事项。
在本讲义中涉及到的函数,具体的字段格式按照如下约定表示:
BOOL | 布尔值或标志,例如真或假 |
NUM、NUM1、NUM2 | 任意数字 |
REAL、REAL1、REAL2 | 任意实数,例如1.69、-7.8 |
INT、INT1、INT2 | 任意整数,例如1或-6 |
CHAR | 字符代码,例如'D' |
STRING | 字符串,例如"bookID" |
LIST | 项目列表,例如["my""teacher"] |
ITEM | 字段,例如Customer或extract_concept |
DATE | 其值具有DD-MON-YYYY这样格式的日期字段,例如start_date |
TIME | 其值具有HHMMSS这样格式的时间字段,例如power_flux |
此外,本讲义中的函数以函数、结果类型(整数、字符串等)和说明(如果有)各占一列的形式一一列举说明。例如,对函数rem的说明如下。
功能 | 结果 | 说明 |
INT1 rem INT2 | 数值 | 返回INT1除以INT2所得的余数,例如,INT1-(INT1 div INT2)*INT2 |
1. 信息函数
信息函数用于深入了解特定字段的值。它们通常用于派生标志字段。例如,可以使用@BLANK函数来创建一个标志字段,以指示选定字段的值为空值的记录。同样,可以使用存储类型函数(如is_string)来检查某个字段的存储类型。
功能 | 结果 | 说明 |
@BLANK(FIELD) | 布尔值 | 根据上游类型节点或源节点(“类型”选项)中设置的空值处理规则对值为空值的所有记录返回真值。注意,不能通过脚本调用此函数 |
@NULL(ITEM) | 布尔值 | 为未定义值的所有记录返回真值。未定义值是系统Null值,在Modeler中显示为$null$,注意:此功能无法通过脚本调用 |
is_date(ITEM) | 布尔值 | 为所有日期类型的记录返回真值 |
is_datetime(ITEM) | 布尔值 | 为所有日期时间类型的记录返回真值 |
is_integer(ITEM) | 布尔值 | 为所有整数类型的记录返回真值 |
is_number(ITEM) | 布尔值 | 为所有数值类型的记录返回真值 |
is_real(ITEM) | 布尔值 | 为所有实数类型的记录返回真值 |
is_string(ITEM) | 布尔值 | 为所有字符串类型的记录返回真值 |
is_time(ITEM) | 布尔值 | 为所有时间类型的记录返回真值 |
is_timestamp(ITEM) | 布尔值 | 为所有时间戳类型的记录返回真值 |
2. 转换函数
转换函数可用来构建新字段和转换现有文件的存储类型。例如,可通过将字符串连接在一起或分拆字符串来形成新字符串。若要连接两个字符串,请使用运算符“><”。例如,字段Site的值为"BRAMLEY",则"xx"><Site将返回"xxBRAMLEY"。即使参数不是字符串,“><”的结果也始终是字符串,因此,如果字段V1为3,字段V2为5,则V1><V2将返回"35"(字符串而非数值)。请注意,转换函数及其他要求特定类型输入(如日期或时间值)的函数取决于“流选项”对话框中指定的当前格式。例如,要将值为Jan2003、Feb2003等的字符串字段转换为日期存储格式,请选择MONYYYY作为流的默认日期格式。
功能 | 结果 | 说明 |
ITEM1><ITEM2 | 字符串 | 连接两个字段的值,并返回结果字符串ITEM1、ITEM2 |
to_integer(ITEM) | 整数 | 将指定字段的存储值转换为整数 |
to_real(ITEM) | 实数 | 将指定字段的存储值转换为实数 |
to_number(ITEM) | 数值 | 将指定字段的存储值转换为数值 |
to_string(ITEM) | 字符串 | 将指定字段的存储值转换为字符串 |
to_time(ITEM) | 时间 | 将指定字段的存储值转换为时间 |
to_date(ITEM) | 日期 | 将指定字段的存储值转换为日期 |
to_timestamp(ITEM) | 时间戳 | 将指定字段的存储值转换为时间戳 |
to_datetime(ITEM) | 日期时间 | 将指定字段的存储值转换为日期时间值 |
3. 比较函数
比较函数用于字段值的相互比较或与指定字符串进行比较。例如,可以使用“=”来检查字符串是否相等。字符串相等的验证示例:Class="class1"。对数值比较来说,大于表示离正无穷更近,小于表示离负无穷更近,即所有负数均小于任意正数。
功能 | 结果 | 说明 |
TEM1=ITEM2 | 布尔值 | 为ITEM1等于ITEM2的记录返回真值 |
ITEM1/=ITEM2 | 布尔值 | 两个字符串不完全相同时返回真值,完全相同时返回0 |
ITEM1<ITEM2 | 布尔值 | ITEM1小于ITEM2的记录返回真值 |
ITEM1<=ITEM2 | 布尔值 | ITEM1小于等于ITEM2的记录返回真值 |
ITEM1>ITEM2 | 布尔值 | ITEM1大于ITEM2的记录返回真值 |
ITEM1>=ITEM2 | 布尔值 | ITEM1大于等于ITEM2的记录返回真值 |
count_equal(ITEM1,LIST) | 整数 | 返回字段列表中等于ITEM1的值的个数,如果ITEM1为Null,则返回Null |
count_greater_than(ITEM1,LIST) | 整数 | 返回字段列表中大于ITEM1的值的个数,如果ITEM1为Null,则返回Null |
count_less_than(ITEM1,LIST) | 整数 | 返回字段列表中小于ITEM1的值的个数,如果ITEM1为Null,则返回Null |
count_not_equal(ITEM1, | 整数 | 返回字段列表中不等于ITEM1的值的个数,如果ITEM1为Null,则返回Null |
ount_nulls(LIST) | 整数 | 返回字段列表中Null值的个数 |
date_before(DATE1,DATE2) | 布尔值 | 用于检查日期值的排序。如果DATE1早于DATE2,则返回真值 |
max(ITEM1,ITEM2) | Any | 返回ITEM1和ITEM2两项中较大的一个 |
max_n(LIST) | 数值 | 返回数值字段列表中的最大值,如果所有字段值为Null,则返回Null |
min(ITEM1,ITEM2) | Any | 返回ITEM1和ITEM2两项中较小的一个 |
min_n(LIST) | 数值 | 返回数值字段列表中的最小值,如果所有字段值为Null,则返回Null |
time_before(TIME1,TIME2) | 布尔值 | 用于检查时间值的排序。如果TIME1早于TIME2,则返回真值 |
member(ITEM,LIST) | 布尔值 | 如果ITEM是指定LIST的成员,则返回真值,否则返回假值,还可以指定字段名称列表 |
4. 逻辑函数
MODELER表达式可用来执行逻辑运算,主要功能如下。
功能 | 结果 | 说明 |
COND1 and COND2 | 布尔值 | 此运算为逻辑合取运算,当COND1与COND2同时为真时返回真值,如果COND1为假,则不求COND2的值,此时可以构造这样的合取,让COND1首先检验COND2中的运算是否合法,例如,length(Label)>=6 and Label(6)='x' |
COND1 or COND2 | 布尔值 | 此运算为逻辑(包含性)析取运算,当COND1或COND2为真或这两者同时为真时,返回真值,如果COND1为真,则不求COND2的值 |
not(COND) | 布尔值 | 此运算为逻辑否运算,当COND为假时返回真,否则,此运算将返回值0 |
If COND then EXPR1 else EXPR2 endif | Any | 此运算为条件求值,如果COND为真,此运算将返回EXPR1的结果,否则,将返回EXPR2的求值结果 |
If COND1 then EXPR1 Elseif COND2 then EXPR2 else EXPR_N endif | Any | 此运算为多分支条件求值。如果COND1为真,此运算将返回EXPR1的结果,如果COND2为真,此运算将返回EXPR2的求值结果,否则,将返回EXPR_N的求值结果 |
5. 数值函数
MODELER包含许多常用的数值函数,主要功能如下。
功能 | 结果 | 说明 |
-NUM | 数值 | 用于求NUM的相反数,返回具有相反符号的对应数字 |
NUM1+NUM2 | 数值 | 返回NUM1与NUM2相加所得的和 |
code-NUM2 | 数值 | 返回NUM1减去NUM2所得的差 |
NUM1*NUM2 | 数值 | 返回NUM1与NUM2相乘所得的积 |
NUM1/NUM2 | 数值 | 返回NUM1除以NUM2所得的商 |
INT1 div INT2 | 数值 | 用于进行整数除法。返回INT1除以INT2所得的商 |
INT1 rem INT2 | 数值 | 返回INT1除以INT2所得的余数,例如,INT1-(INT1 div INT2)*INT2 |
INT1 mod INT2 | 数值 | 此函数已被rem函数取代,不宜再使用 |
BASE ** POWER | 数值 | 返回BASE的POWER次方,底和幂可以是任意数字(一种情况除外:如果POWER为除整数0之外其他类型的0,则BASE不能为0)。如果POWER为整数,则可通过将BASE连续乘POWER次计算出结果,因此,如果BASE为整数,则结果为整数。如果POWER为整数0,则结果将始终是与BASE类型相同的1。如果POWER不是整数,则用公式exp(POWER * log(BASE))计算结果 |
abs(NUM) | 数值 | 返回NUM的绝对值,结果始终是同一类型的数值 |
exp(NUM) | 实数 | 空值是指零长度的字符串返回e的NUM次方(e为自然对数的底) |
fracof(NUM) | 实数 | 返回NUM的小数部分,定义为NUM-intof(NUM) |
intof(NUM) | 整数 | 将其参数截为整数,返回与NUM符号相同的整数,取满足abs(INT)<=abs(NUM)的最大值 |
log(NUM) | 实数 | 返回NUM的自然对数(以e为底),NUM不能为零(无论何种类型) |
log10(NUM) | 实数 | 返回NUM以10为底的对数,NUM不能为零(无论何种类型)。此函数定义为log(NUM)/log(10) |
negate(NUM) | 数值 | 用于求NUM的相反数,返回具有相反符号的对应数字 |
round(NUM) | 整数 | 用于将NUM四舍五入取整数,如果NUM为正数,则用公式intof(NUM+0.5),如果NUM为负数,则用公式intof(NUM-0.5) |
sign(NUM) | 数值 | 用于确定NUM的符号,如果NUM为整数,此运算将返回-1、0或1。如果NUM为实数,将返回-1.0、0.0或1.0,取决于NUM是负数、零还是正数 |
sqrt(NUM) | 实数 | 返回NUM的平方根,NUM必须是正数 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论