base SAS programming学习笔记13(Array)

1.Array array-name{dimension} <elements>

        array-name:向量名称

        dimension:向量长度,默认为1;

        elements:列出变量名,变量名要么全是数值变量或者全是字符变量

        array-name和variable不能相同;也不能和函数名称相同;

        array的名称不可以在label、format、drop和keep或者length语句中使用。

dimension可以取数值、数值范围或者*

array sales{4} qtr1 qtr2 qtr3 qtr4

array sales{96:99} qtr1-qtr4

array sales{*} qtr1 qtr2 qtr3 qtr4

变量名取值可以变量名、也可以是“-”连接的变量名序列,也可以是_ALL_(所有变量),_NUMERIC_(所有数值变量),_CHARACTER_(所有字符变量)

如:array sales{*} _numeric_;

当读取一行数据放入PDV里面(程序向量),在这行数据里面对array里面的变量值循环做相同的处理。

2.ARRAY 函数 

        dim(array-name):计算向量里面的变量个数

        

3.使用ARRAY 创建新变量

          array  array-name{dimension} <variablename> )

创建新变量,未自定义变量名,变量名默认为array-name后接1,2,.....dimension ;

后接 $ 表示字符型,默认长度为8,可以加上数值表示字符的长度

比如:array firstname{5} $ 24;

举例如下:

也可以自定义variable-name;

给新建的变量赋初值:

        array  array-name {dimension} <variable name> (initial values)

在变量名之后赋初值,初值和变量名一一对应,初值间用空格或逗号隔开,初值用括号括起来;

在向量里面赋值的初值在PDV中会自动从第一行开始予以保留,不清空

如:array goal{4} g1 g2 g3 g4 (9000,9300,9600,9900)

       array col{3} $ color-color3  (“red”,"green","blue")

也可以不设置变量名为向量里面的每个元素赋值

        array var{4} (1 2 3 4),

举例如下:

结果如下:

 如上在ARRAY中定义的变量,会输出至SAS数据集,因此可以用_TEMPORARY_来创建临时变量,临时变量不会出现在SAS数据集中:

4.使用ARRAY创建多维向量

        上述均是用ARRAY创建的一维向量,创建二维向量如下:

        array new{3,4} x1-x12; {r,c}: r表示row,c表示column;

        可以使用new(2,3)来引用向量里面的值;

向量如下:

举例如下:

在每次迭代开始给qtr{i}赋值为0,是为了避免上一个qtr值累积到下一个qtr值;

上述程序执行逻辑如下:

1)SAS在PDV中先根据ARRAY 组织或创建新变量如下:

2)当第一个DO循环i=1时,qtr{1}=0;面对第二个DO循环时,qrt{1}+m{1,1}:

qrt{1}+m{1,2}:

qtr{1}+m{1,3}:

3)结束循环时,PDV如下:

最终结果如下:

4)还可以实现数据转置,横向数据转成纵向数据举例如下:

源数据:

转置后数据

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值