SAS中@@符号的含义

@,@@,# 是input语句中的指针控制命令;

1)@ 表示执行下一个操作时,指针移到下一个记录(也就是下一行)

eg1:仅有一行数据

data age;
input id age @; /*使用一个@*/
cards;
1 23 2 29 3 49 4 36
;
run;/*数据占用一行空间,此时SAS仅读了1次,显然没有读完,与我们期待不同,就跳到下一行阅读下一个数据,因为下一行没有数据可读,所以就读了一次就完了*/
proc print data=age;
run;

  

eg2:多行数据

data age;
input id age @; /*使用一个@*/
cards;
1 23 2 29 3 49 4 36
5 23 6 29 7 49 8 36
;
run;/*每行数据占用一行空间,此时SAS仅读了2次,显然没有读完,就跳到下一行阅读下一个数据,也就是光标就跳到了下一行*/
proc print data=age;
run;   下图非期待结果

2) @@ 表示执行下一个操作时,指针保持在当前记录(当前行)

SAS默认每行读取的数据是和变量数对应的,比如有2个变量,SAS每行就会只读2个数,读完后立刻转到第二行继续读取,而不管右边是否有数据,强制SAS向后看的方法就是在input语句的最后一个变量后面加上@@符号,

eg1:仅有一行数据

data age;                                         
input id age@@;  /*使用@@数据可以在当前行连续阅读*/
cards;
1 23 2 29 3 49 4 36
;
proc print;
run;       下图才是我们期待的结果              

 

eg2:多行数据

data age;
input id age @@; /*使用一个@*/
cards;
1 23 2 29 3 49 4 36
5 23 6 29 7 49 8 36
;
run;/*每行数据占用一行空间,此时SAS每连续读完一行就开始下一记录(下一行)*/
proc print data=age;
run;

3)# 行的控制指令  #4代表仅读取第四行,如下示例

data c;
input # 4 name $;  
cards;
sara
kate
marry
haryy
tom      下图SAS仅读取了第四行数据
;
run;   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值