SAS可以把一组同为数值型或同为字符型的变量合在一起,使用同一个名字称呼,用下标来区分。这与通常的程序设计语言中的数组略有区别,通常的程序设计语言中数组元素没有对应的变量名,而SAS数组每个元素都有自己的变量名。

一、数值型数组
            定义数值型数组的格式为:
   ARRAY 数组名(维数说明) 数组元素名列表(初始值表);
例如:
ARRAY tests(3) math chinese english (0, 0, 0);
数组名是一个合法的SAS名字且不能与同一数据步中的变量重名。对一维数组,维数说明只要说明元素个数,这时下标从1开始。数组元素名列表列出这个数组的各个元素实际代表的变量名,各变量名以空格分隔。比如,上例中tests(1)代表数学成绩,tests(2)代表语文成绩,tests(3)代表英语成绩。初始值表给各数组元素赋初值,按顺序对应。
            数组说明中初始值表可以省略,这时其初始值为相应数组元素的值(如果其数组元素还没有值则初值为缺失值)。
            数组说明中的数组元素名列表可以省略,这时其元素也有对应的变量名,变量名为数组名后附加序号,比如:
ARRAY x(3);
中数组x的各元素名为x1,x2,x3。
            也可以在说明维数时用“下标下界:下标上界”来说明一个其它的下标下界,如
ARRAY sales(95:97) yr95-yr97 ;
这时sales(95)为yr95,sales(96)为yr96,sales(97)为yr97。上面的变量名列表是一种特殊的语法,在用到变量名列表时如果连续写几个前面字母相同,后面是连续的序号的变量,只要写出第一个和最后一个,中间用减号连接。
            一维数组的维数说明还可以是一个星号,这时数组大小由提供的元素列表中的变量个数决定,如上面的数组tests可以等价地说明为:
ARRAY tests(*) math chinese english (0, 0, 0);
可以用函数DIM(数组名)来获得数组的长度。
            可以定义二维数值型数组,只要在维数说明中指定用逗号分开的两个下标界说明,例如:
array table(2,2) x11 x12 x21 x22;
说明table(1,1)为x11,table(1,2)为x12,table(2,1)为x21,table(2,2)为x22。二维数组元素按行排列。
            二、字符型数组
            定义字符型数组的语法略复杂,它需要加一个$符来说明数组元素类型为字符型,并且要说明每一元素所能存储的字符串的最大长度。说明格式如下:
ARRAY 数组名(维数说明) $ 元素长度说明 数组元素名列表 (初始值表);
例如:
ARRAY names(3) $ 10 child father mother;
字符型数组其它方面用法与数值型相同。
            三、临时数组
            上面格式说明的数组都是把若干个变量集合在一起使用同一个数组名称呼,每个数组元素是一个独立的变量。SAS也提供了与其它程序设计语言相同的数组,即数组元素只由数组名和序号决定,没有对应的变量名。这种数组叫做临时数组,定义格式为:
ARRAY 数组名(维数说明) _TEMPORARY_ (初始值表);
可见临时数组就是在数组说明中用_TEMPORARY_代替了数组元素列表。例如:
ARRAY x(3) _TEMPORARY_ (0, 0, 0);
说明了一个有三个元素的临时数组x。其元素为x(1),x(2),x(3),即使变量x1,x2,x3
            存在也与此数组无关。临时数组的特点是它只用于中间计算,最终不被写入数据集。并且临时数组与其它变量不同的是,它在数据步隐含循环(后面会解释此概念)中能自动保留上一步得到的值。临时数组当然也可以有多维数组,或字符型数组。
            四、使用数组
            临时数组的使用与其它程序设计语言中的数组作用相同,可以存放性质类似的数据进行处理。SAS以变量为元素的数组可以方便变量的循环处理,比如,读入了comp1-comp10
            十个计算机销售额变量,prin1-prin6六个打印机销售额变量,希望计算其总和,可以用如下的数组说明与DO循环配合进行:
data sales;
input comp1-comp10 prin1-prin6;
ARRAY y(*) comp1-comp10 prin1-prin6;
tot=0;
do i=1 to DIM(y);
    tot + y(i);
end;
cards;
………
;
run;

此例中数组说明用了星号说明维数,求总和时用了累加语句。事实上,在数组说明的数组元素列表部分除了列出具体的变量名表外,还可以用特殊名字_NUMERIC_代表所有数值型变量的列表,用_CHARACTER_代表所有字符型变量的列表,用_ALL_代表所有变量的列表(用_ALL_
            时所有变量应该同为数值型或同为字符型,否则出错)。所以上例中的数组y的说明中还可以用_NUMERIC_或_ALL_代替变量名列表。
            实际上,SAS为变量累加提供了一个专门的函数SUM(OF …),比如上面的tot变量可以用SUM(OF comp1-comp12
            prin1-prin6)计算。这个例子主要为说明如何循环处理多个变量。

SAS的数组array介绍相关推荐

  1. php怎样解析数组,PHP 数组 Array 解析

    官方介绍 PHP 数组实际上是一个有序的映射(map),映射是一种把多个值(values)关联到对应的多个键(keys)的类型.这种映射类型在很多方面做了优化,因此可以把它当成真正的数组(就是上面说的 ...

  2. Swift基础——数组Array

    Swift基础--数组Array 数组:使用有序列表存储同一类型的多个值,相同值可出现在一个数组的不同位置. 数组简介 首先,和String一样我们也来看看他的一些Api方法 常规操作方法 rever ...

  3. Go开发 之 容器(数组Array、切片slice、映射map、列表list)

    文章目录 0.唠唠叨叨 1.数组-Array 1.1.什么是数组 1.1.1.数组的声明 1.1.2.比较两个数组是否相等 1.1.3.示例 1.1.3.1.通过索引下标访问元素 1.1.3.2.数组 ...

  4. TIA博途中变长数组的介绍与使用入门示例

    TIA博途中变长数组的介绍与使用入门示例 使用变长数组的注意事项: 接口参数Array[*] of -,实参使用指定类型数组: 可以使用的范围:FC的Input.InOut,FB的InOut: FC或 ...

  5. java第三讲:数组(Array)

    文章目录 1. 数组Array前言 2. 一维数组 3. 多维数组 4. Arrays工具类的使用 1. 数组Array前言 数组(Array):是多个相同类型数据按一定顺序排列的集合,并使用一个名字 ...

  6. Java 中数组Array和列表List的转换

    主要介绍Java中Java 中数组Array和列表List的转换. 一.数组Array转列表List 1.使用Collections.addAll()方法 使用Collections.addAll() ...

  7. Win32 OpenGL编程 5 顶点数组详细介绍

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Win3 ...

  8. go数组Array和切片Slice全面简述理解

    小聊:本文是小白刚学习 golang 时候的总结,在基本学习了解之上的特性比较与讨论,go的数组有什么不同?切片又有什么好处?怎么去区分它们的使用?外加一些知识的拓展,有利于加深对 go 的 Arra ...

  9. 浅析向量(Vector),迭代器(Iterator)和数组(Array)

    目录 前言(Foreword): 向量(Vector): 1.何为向量? 2.如何初始化Vector向量? 3.向量的基本操作: 4.Range-based For Statement: 5.向量的插 ...

最新文章

  1. 树莓派 SyntaxError: invalid syntax(python错误)
  2. 其中:ping.netstat,tracert 是最关键的三个.每年都有!~
  3. python下载地址
  4. (转)javabean是什么和总结javabean的两种使用方式
  5. Linux 退出vi 命令简介
  6. 学习笔记-AngularJs(四)
  7. holer实现外网访问内网数据库
  8. 每天看一片代码系列(三):codepen上一个音乐播放器的实现
  9. ubuntu15.10 gvim php,IDE---Gvim之ubuntu下配置php的ide开发工具
  10. 前端在linux中常用的命令,前端在SSH上常用的Linux命令
  11. 爱心的数学函数方程_什么函数图像能构成爱心?
  12. [USACO2008 Mar]土地购买
  13. 免费且快速搭建个人www服务器的教程
  14. 计算机二级的公共基础课水平测试,计算机二级公共基础知识复习试题含答案
  15. python在两行中分别输入一个字符串s和整数n,定义一个函数将字符串s循环向右移动n位
  16. MySQL数据库备份+恢复
  17. 华为服务器pci数据捕获和信号处理,2021年华为LTE初级面试题与答案汇总.doc
  18. 我们分析了200款“二次元游戏”,最终发现了这些
  19. 我有八千元,买苹果手机还是安卓呢?
  20. AI 边缘计算平台 - RK3588 / 旭日 X3 派 / 爱芯派 AX620A / K510 简介

热门文章

  1. 是vans_硬核复刻,就服VANS棋盘格
  2. android自定义弹出对话框,使用FlyDialog实现自定义Android弹窗对话框
  3. java结构体系_java io结构体系
  4. 【渝粤教育】国家开放大学2019年春季 2205-22T开放英语2 参考试题
  5. 【渝粤题库】陕西师范大学292301 国际金融学Ⅱ 作业(专升本)
  6. 【渝粤题库】广东开放大学 民事诉讼法 形成性考核
  7. 【渝粤题库】广东开放大学 互联网营销 形成性考核
  8. “攻城狮”手把手教你物联网智能生活-内网穿透技术
  9. 1G、3G都失败了,5G也会失败吗?
  10. python flask 上传下载 api_python – 使用Flask上传和下载文件