【SAS NOTE】数组
本文引自:http://mengyuejuan1.blog.163.com/blog/static/54463100200992281135856/
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)计算。这个例子主要为说明如何循环处理多个变量。
转载于:https://www.cnblogs.com/colipso/archive/2013/03/06/2945808.html
【SAS NOTE】数组相关推荐
- SAS的数组array介绍
SAS可以把一组同为数值型或同为字符型的变量合在一起,使用同一个名字称呼,用下标来区分.这与通常的程序设计语言中的数组略有区别,通常的程序设计语言中数组元素没有对应的变量名,而SAS数组每个元素都有自 ...
- 【SAS NOTE】substr函数
From http://blog.sina.com.cn/s/blog_6e0a03730100mwvy.html Substr(s,p,n)函数 [功能]字符替换与提取字符 [类别] 字符函数 [语 ...
- 【SAS NOTE】substr字符串提取函数
substr(s,p,n)函数 [功能]字符替换与提取字符 [类别] 字符函数 [语法] 1 (right of =) Function,提取字符:Substr(s,p,n)从字符串s中的第p个字符开 ...
- python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组
我是python正则表达式的初学者.我达到了我所需要的,但是由于缺少经验,这真的很丑.我的目标是转换以下形式的字符串数组: notes = ["10.0% higher", &qu ...
- 存储基础:ATA、SATA、SCSI、SAS、FC
一.概述 关于存储,作为一名运维工程师我觉得是很有必要去花点时间去了解一下的!磁盘是服务器.存储设备的主要存储媒介之一,非常重要! 按照存储介质类型一般分为机械磁盘(HDD.传统磁性硬盘).固态磁盘( ...
- matlab画调和曲线图,[求助]如何用SAS画调和曲线图???
据经验,SAS做出来的图都很难看,要想做出一些高质量的图,最好不要用SAS. SAS的数组 http://www.8sta.com/Article/statsofts/sas/200412/278.h ...
- 【CTF解题】BCTF2018-houseofatum-Writeup题解
先把ld和Libc给换成题目给的 patchelf --set-interpreter ./glibc-all-in-one/libs/2.26-0ubuntu2_amd64/ld-2.26.so - ...
- 【pwnable.tw】 death_note
题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为n ...
- java中array,arrayList,iterator;
Array String []a = new String[10] ; a[0] = "test" ; String []a = new String[]{&quo ...
最新文章
- 使用Orange Pi Zero做小小服务器(VNC篇)
- [PHP] 超全局变量$_FILES上传文件
- 最简单最详细的SpringBoot入门项目——HelloWorld
- Python的Tkinter点击按钮触发事件
- hadoop put命令的格式_工作中需熟练掌握的Hadoop命令
- jfinal连接oracle_JFinal框架操作oracle数据库
- [转]微服务轮子项目(27) -MySQL 主从复制、主从切换、主主复制
- Redis教程:事件、客户端和服务器
- netty如何知道连接已经关闭,socket心跳,双工?异步?
- 如何进行软件需求分析
- 记录一次VM14虚拟机出问题 Oh no,something has gone wrong!
- win10清理_春节过后你的电脑该减肥了 Win10清理C盘瘦身全攻略
- 浅谈 CMap 与 map
- MySql查询当前版本
- cdr 表格自动填充文字_CDR小工具YG插件,从此提升工作效率!
- 小明身高180cm,小刚身高165cm,计算两人的身高差
- jQuery 08-13
- MCDF实验_lab1(1)
- Biotin-PEG-Mal,Biotin-PEG-Maleimide,生物素聚乙二醇马来酰亚胺的应用介绍,一起来看
- 强制性产品认证车辆一致性证书二维码解析
热门文章
- SimVLM:拒绝各种花里胡哨!CMUGoogle提出弱监督极简VLP模型,在多个多模态任务上性能SOTA...
- 【含内推码】字节跳动智能创作2022秋招提前批全面开启!
- 全新OpenMMLab邀你入伙 共创AI开源世界
- 巴塞尔大学合作项目博士招生,医学图像分析领域
- 优秀!港大同济伯克利提出Sparse R-CNN: 目标检测新范式
- 文本识别新王者CharNet:卷积字符网络
- Python实现一个简单的毕业生信息管理系统的示例代码!非常简单
- 【Python】Python实战从入门到精通之五 -- 教你使用文件写入
- 面向对象(OOP)基本概念
- OpenCV人脸识别之二:模型训练