sas学习 之time.和tod.、@和@@、deadlines和deadline4对比
在学习sas时经常会碰到一些options会有不同的选择,那么他们的区别在哪里呢。
1、 time.VS tod.
time.:9:00(小时若只有一位则会用空格来填充) tod.:09:00(小时若只有一位则会用0来填充)
time 的值可以是 sas 时间值,但它表示持续时间。因此,time 的值可以超过 23:59:59,也可以是负值。 而tod是采用24小时制,一旦其时间超过24:00:00或者小于00:00:00,他则会自动更改为24小时制表示发。您可以为 tod格式指定一个大于 24:00:00 的值,但它采用该值的 mod 和 24:00:00。例如,如果为tod指定值 '25:00:00’t,则会将该值的格式设置为 1:00:00。
具体例子为:
data one;
format time11 time. time12 tod.
time21 time. time22 tod.;
time11 = '9:00:00't*3;
time12 = '9:00:00't*3;
time21 = '9:25:00't-'10:30:00't;
time22 = '9:25:00't-'10:30:00't;
run;
最终会有如下结果:
2、@ VS @@
@:读取数据时,所有变量在一行读取完之后自动读取下一行数据作为下一行的观测 @@:形成输出记录时读取所有数据,即使某一行数据个数大于变量个数也不换行 区别与联系:@作用类似与@@,都是行停留指示符,不同的地方在于停留多久,@能使sas停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)
关于@和@@这里不再过多赘述,链接中的文章写的很清楚明了
3、deadlines和deadline4
cards是几十年前输入数据是使用的打孔卡,其对于行的长度有一定的限制。datalines和dataline4都是后来为了突破行长度的限制添加的。其中dataline4中可以使用一些有特殊探疑的符号,且用四个连续的分号开始的一行来标记数据行的结束,而deadlines只需要一个分号即可。数据行不能包含分号。当数据包含分号时,需用 dataline4 语句即dataline4 可以读取包含您直接在程序中输入的分号的数据。
/*deadlines例子*/
data person;
infile datalines delimiter=',';
input name $ dept $;
datalines;
John,Sales
Mary,Acctng
;
/*deadline4例子*/
data biblio;
input number citation $50.;
datalines4;
KIRK, 1988
2 LIN ET AL., 1995; BRADY, 1993
3 BERG, 1990; ROA, 1994; WILLIAMS, 1992
;;;;