个人总结的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 = "<expression>"
        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 STREAM DEFAULT_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微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918