设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1380|回复: 0

SAS中的编程技巧

[复制链接]

22

主题

168

金钱

270

积分

入门用户

发表于 2019-7-2 13:23:09 | 显示全部楼层 |阅读模式

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步的次数,一般来说,是等于读入观测的条数的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表