09数据加工整理-变量与信息控制课程.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 数据加工整理 -变量与信息控制 清华大学经济管理学院 朱世武 zhushw@em.tsinghua.edu.cn 本章内容 本章介绍利用数据步的变量与信息控制语句进行数据加工整理。 数据步变量与信息控制语句规定数据集中变量的个数及相关信息。变量与信息控制语句不是执行语句,可以出现数据步的任何地方,且功能相同。 本章介绍的数据步变量与信息控制语句 ARRAY语句 ARRAY语句用于定义数组。数组通常由一组变量构成。 利用数组可以简化很多复杂的数据处理过程。 SAS系统引用数组等价引用构成数组的那一组变量。 显式下标数组语句 显式下标数组由数组名,元素个数的说明,及元素的列表等构成。 通过数组名引用整个数组,通过数组元素的序号(也称为下标)引用该元素。 语句格式 ARRAY array-name{subscript}$length array-elements(initial-values); 选项说明: 下标的三种格式 下标用于表示数组中元素的个数和排列的范围。括号可用大括号,中括号或圆括号。 下标格式有三种: 例9.1 用格式一定义一维、二维数组。 Array simple{3} red, green, yellow; /*定义一维数组 */ 例中,数组名为simple,数组有三个元素,对应的变量命名分别为red, green, yellow. ? Array x{5,3}scorel-score15; /*定义二维数组 */ 例中,数组名为X,15个变量scorel---score15按顺序从左上角开始逐行放入这个二维数组。 ? 例9.2 用格式二定义二维数组。 Array x{1:5,1:3}scorel-score15; 当用1作为数组下界时可以省略。 注意:用0作为下界时,可以加快处理时间,因为计算下标的时间减少了。 数组元素的表示方法 数组元素必须全是数值变量,或全是字符变量,可以用任意的顺序列出。 ? 数据组的两种表示方法: 列出变量名; 建立临时数组元素列表。 例9.3 列出变量名。 Array C{3} Cl-C3; Array C{3}; /*和上例句等价 */ Array A{*} _NUMERIC_ ; Array A{*} _CHARACTER_; 建立临时数组元素列表: _TEMPORARY_; 使用临时数组元素列表可以少占用内存,加快执行时间。 可以像使用DATA步中变量那样使用临时数组元素,但要注意有下面几点不同: 它们没有名字,引用时必须用数组名和下标; 不能出现在输出的数据集上; 不能用特殊下标(*)来引用所有元素; 临时数组元素的值被自动保存,而不是像DATA步中的变量,在下一次重复开始时被置为缺失值。 初始值的表示方法 例9.4 数组元素和初值通过对应的位置来确定。 array test (3) t1 t2 t3 (90 80 70); array ab(5) (5 4 3); 例中,第一个语句数组元素的个数与初值的个数相同,把初值90,80和70依次赋给变量t1,t1和t3。第二个语句分配5给ab1,4给ab2,3给ab3,因数组元素比给出的初始值多,多余的变量ab4和ab5为缺失值,而且SAS系统将发布一个警告信息。 应用举例 例9.5 定义数组例句。 array rain{5} x1-x5; array ab(*)x y z; array x[*]_NUMERIC_; array test(3)_temporary_(90 80 70); array days{7} d1-d7; array x{2:5}green red denato fetzer; array test (3:4,3:7) test1-test10; 引用显式下标数组元素 凡是可用表达式的地方,都可以使用数组元素。 ? 例9.6 通过下标引用数组元素。 data new; input qal-qa10 qb1-qb10; array test{10} qal-qa5 qb1-qb5; put test{4}= test{6}=; cards; 1 1 1 6 1 1 1 1 1 1 8 2 2 2 2 2 2 2 2 2 ; 例中,输出qa1和qb1的值,即数组元素test(4)引用qa4, 数组元素test(6)引用qb1. 一个数组的定义仅在当前的DATA步有效。如果想在几个DATA步引用同一个数组,必须在每个DATA步中都定义这个数组。 循环DO组中引用 例9.7 规定数组元素的下标为DO组循环变量的值。 array day(7) d1-d7; do i=1 t

文档评论(0)

富贵礼包 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档