SAS的一个特点是能够把时间(年、月、日,时、分、秒)化为数值。当你按照规定替换格式将时间输入后,SAS系统把时间(日期)表示为某个整数:当你输入年、月、日时,以某一参考日期为0,则该整数是在此参考日期之后的天数。该参考日期是1960年1月1日,也就是说1959年12月31日为-1,之前的日期负得更多;1960年1月2日为1,之后的日期为更大的整数。这么一来,对日期可以比较,也可以运算,还可以用sort过程排序。这种输入日期值的替换格式也适用于输出格式,关于输出日期值的替换格式见5.2.1。
常用的年、月、日输入替换格式如下:变量名date后跟整数9,再加“.”,这时变量值是“日月(英文简写)年”,中间无空格,整数9等于年、月、日的字符数;这时变量值是“dd”、“mm”、“yy”连接后跟字符数10,再加“.”,日(dd)、月(mm)、年(yy)都用数字表示,它们中间用“/”或“-”分开。例如1984年7月19日的各种替换格式与输入字符如表3-9所示,在SAS中这4种方法得到的日期函数值都是8966,即1984年7月19日是1960年1月1日之后第8966天。
表3-9 常用日期的替换格式
例3.11 若儿子和父亲的出生日期是变量date的两次观测值,另有两个变量high、weight表示父子出生时的身高(单位为厘米)和体重(单位为千克),数据如表3-10所示。编程算出这两个日子之间有多少天以及父子身高和体重的差异。
表3-10 父子出生数据
解 考虑到时间是按照月、日、年的顺序排列,可用以下程序:
(www.xing528.com)
提交后得到
可见06/22/1980是1960年1月1日后的第7478天,05/13/2015是1960年1月1日后的第20221天,父亲比儿子大12743天,出生时矮9厘米,轻0.4千克。
另外一种常用的年月输入格式是:年月的字母简写“mon”和“yy”的组合后跟字符宽“7.”,这时没有指名具体日期是该月的哪一天,SAS自动以该月的第1天作为计算日期。程序如下:
提交程序后得到:
其中,11109是1990年6月1日所对应的数据,18383是2010年5月1日所对应的数据。
练习题 计算在SAS系统中公元1919年5月4日对应的数值是多少。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。