SAS中的编程技巧

SAS中的编程技巧:
1.Data步中加上LIST; /*显示每行的数据,以便核对。可省之*/
2.infile fileref PAD; /*PAD选项会在每条记录填补空格,使它们具有同样的长度*/
3.获取系统的日期、时间
利用date()/today()、time()等函数获取系统日期和时间。
例如:dt=date(); te=time();
利用sysdate、systime系统宏变量获取SAS启动时的日期时间。
例如:dd="&sysdate"d; tt="&systime"t;

补充说明:
yrdif(stardate,enddate,'actual') 返回两个日期之间的真实间隔年数
datdif(stardate,enddate,'actual') 返回两个日期之间的真实间隔天数, 与intck函数的效果是一样的
INTCK("day",d1,d2); /* 计算d1、d2日期之间的天数intd */

day()        返回日
month()      返回月
qrt()        返回季
year()       返回年
weekday()    返回星期, 值为一个1~7的数值,其中Sunday是1,而Saturday是7

intck()                    返回计算两个日期之间的天数
intnx('interval',d1,d2)   返回d1之后d2个间隔后的日期
例如:
data tmp; /* 建立数据集tmp*/
informat d1 d2 YYMMDD10.;/* 设置变量d1、d2的日期输入格式*/
input d1 d2; /* 读入变量d1、d2的值*/
intd=intck("day",d1,d2); /* 计算d1、d2日期之间的天数intd */
d3=intnx("week",d1,10); /* 计算d1日期后10个星期时的日期d3 */
format d1-d3 YYMMDD8.; /* 设置变量d1、d2、d3的日期输出格式*/
cards;
2001/06/30 2002/06/30 结果:
2001:08:01 2001-10-01 OBS   D1      D2         INTD    D3
proc print; 1   01-06-30  02-06-30   365  01-09-02
run; 2   01-08-01  01-10-01    61  01-10-07

4.scan只能用于char类型的搜索。而index, indexc不受此局限。
5.像c语言一样,数组下标从0开始其实是有好处的,可以提高处理的速度。
6.如何将指针向左移动? 
解答:可以采用+负数的形式,但是不要自作聪明的就写一个负数。
例如:
正确的写法 input @23 length 4. +(-5) width 4.; 
错误的写法 input @23 length 4. -5 width 4.;
7.options ls=80 ps=60 replace;
ls(line size)是行数 
ps(page size)是列数
replace是允许替换永久数据库
8._N_代表SAS执行DATA步的次数,一般来说,是等于读入观测的条数的
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值