个人总结的SPSS Clementine Scripts基本语法

作者:bolow (cnjm)
2007/3/28 17:16:12
本文关键字: ttnn 2005年11期

1.作者:bolow (cnjm)。转摘请标明出处

2.本文大部分内容为笔者在业余时间根据SPSS的官方文档整理出来,
* 按语法内容分成若干章节,大多数为语法元素的示意,讲解不多,
* 阅读时可能要求您有其他语言的编程经验

3.您在使用Clementine或者Clem Scripts时候遇到问题请不要给我发邮件,
* 我现在正在为生计奔波,可能没有足够的时间帮您处理问题,
* 遇到问题还请您自己多按F1了。
* (请见谅)如果您能给我提供工作机会的话请发信到ibolow(at)gmail.com
*/

一 变量与类型

1 域(field)的名称以及变量名以字母开头,可以包含字母、数字以及下划线。
如果命名不遵循以上原则,名称需要用单引号包括

2 数据类型使用样式
字符串 --"c1", "Type 2", "a piece of free text"
整数 --12, 0, –189
实数 --12.34, 0.0, –0.0045
日期时间 --05/12/2002, 12/05/2002, 12/05/02
字符 --`a` 或者 3
列表 --[1 2 3], [’Type 1’ ’Type 2’]

3 引号使用规则
字符串 --最好使用双引号。虽然单引号也能用,但是有时候会和域名混淆
字符 --使用后引号`(ESC键下面的那个)
也可以使用数字
也可以使用字符串中的索引 比如lowertoupper("druga"(5)) —> "A"
域名 --通常是不用加引号的,但是如果包含了空格等特殊字符就要加上双引号
如果给没有定义的域名加上引号,可能会被认为是字符串
参数名 --必须使用单引号

二 语法

1 运算符优先顺序
函数参数
函数调用
xx
x / mod div rem
+ -
> < >= <= /== == = /=


2 结构控制
a if..then..else
if EXPR then STATEMENTS 1
else STATEMENTS 2
endif

举例
if ^param = 24 then
create derivenode
else exit 2
endif

b for循环
× for PARAMETER in LIST
STATEMENTS
endfor

× for PARAMETER from N to M
STATEMENTS
endfor

× for PARAMETER in_models
STATEMENTS
endfor
对生成模型面板上的模型进行枚举操作,模型的名字被传到PARAMETER变量中

× for PARAMETER in_fields_at NODE
STATEMENTS
endfor
对node节点下游(downstream)节点的每个字段进行操作

× for PARAMETER in_fields_to NODE
STATEMENTS
endfor
对node节点下游(upstream)节点的每个字段进行操作

× exit
for PARAMETER in_streams
STATEMENTS
endfor
对当前打开的流进行枚举操作

3 赋值示意
×set :balancenode.directives = [{1.3 "Age > 60"}]
set :fillernode.condition = "(Age > 60) and (BP = \"High\")"
set :derivenode.formula_expr = "substring(5, 1, Drug)"
set Flag:derivenode.flag_expr = "Drug = X"
set :selectnode.condition = "Age >= ’$P-cutoff’"
set :derivenode.formula_expr = "Age - GLOBAL_MEAN(Age)"
set nodename.tablename="mytable"
set: databasenode.table="atablename"
set my_node = get node :plotnode
set :samplenode {
max_size = 200
mode = "Include"
sample_type = "First"
}
set :balancenode.directives = [{1.3 "Age > 60"}]
set :fillernode.condition = "(Age > 60) and (BP = \"High\")"
set :derivenode.formula_expr = "substring(5, 1, Drug)"
set Flag:derivenode.flag_expr = "Drug = X"
set :selectnode.condition = "Age >= ’$P-cutoff’"
set :derivenode.formula_expr = "Age - GLOBAL_MEAN(Age)"
完整的表达形式应该是 set nodename:NODETYPE.prop=value
在独立脚本中引用节点要加^

× 设置超节点参数
set mySuperNode.parameters.minvalue = 30
set :process_supernode.parameters.minvalue = 30
set :process_supernode.parameters.minvalue = ""
set mySuperNode:process_supernode.parameters.minvalue = 30
set mySuperNode.parameters.’Data_subset:samplenode.rand_pct’ = 50
set :source_supernode.parameters.’Data_subset:samplenode.rand_pct’= 50
在定义一个超节点的参数的时候,必须使用短名

4 设置一个图标的位置
position nodename at 450 50


5 执行某个节点
execute :exe_node_name


6 新建一个节点和流
×创建节点
var x
set x = create typenode
rename ^x as "mytypenode"
position ^x at 200 200
var y
set y = create varfilenode
rename ^y as "mydatasource"
position ^y at 100 200
connect ^y to ^x

set node = create typenode
rename ^node as "mytypenode"
position ^node at 200 200
set node = create varfilenode
rename ^node as "mydatasource"
position ^node at 100 200
connect mydatasource to mytypenode

×创建流
create STREAMDEFAULT_FILENAME


7 访问数据结果
×value RESULT at ROW COLUMN

×set num_rows = :tablenode.output.row_count

×set table_data = :tablenode.output
set last_value = value table_data at num_rows num_cols


8 文件操作
× 打开文件
open MODE FILENAME
MODE create/append

× 关闭文件
close FILE

× 举例
set file = open create ’C:/Data/script.out’
for I from 1 to 3
write file ’Stream ’ >< I
endfor
close file

9 连接节点
create tablenode
create variablefilenode
connect :variablefilenode to :tablenode
set :variablefilenode.full_filename = "C:\Program Files\Clementine\8.1\demos\DRUG1n"
execute ’Table’
set param = value :tablenode.output at 1 1
if ^param = 24 then
create derivenode
else exit 2
endif

责编:bolow (cnjm)
vsharing 微信扫一扫实时了解行业动态
portalart 微信扫一扫分享本文给好友
著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
畅享IT
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918
Baidu
map