看了一下来自上海的狂风暴雨,真的连门都出不了。大家注意安全,危险往往就来自于自己的自以为是和粗心。
想了一下要是突然的自然灾害导致自己出不了门,房间里的东西够自己撑多久?4月份在拼多多上买了10斤大米,现在还剩1/5,端午节在多多买菜上买的几包挂面,现在还剩2包,所以,撑一个星期是够的,就是可能天天吃要吃恶心了。
今天继续聊聊SAS对时间的处理,在实际项目中,一般临床试验启动后SAS程序部应该就可以准备写SDTM,ADaM了,但是这时候往往没有受试者的真实试验数据,所以一般都是用测试数据来代替。
但是这也存在一定的问题,就是测试数据乱七八糟的,比如时间,有可能用药时间小于知情同意的时间,这一看就不对,还有时间也可能杂乱无章,正常时间是这样,比如2021-07-26,但是测试数据中可能就是2021-UK或者2021-UK-UK,所以这时候就得对时间进行处理了。
一:datepart,timepart获取日期的日期部分,时间部分
得如下结果
有几个注意的点:
①:datepart,timepart只能都数值型的日期做处理,所以得先将日期转换成数值型。
②:日期要符合is8601dt.的格式,如果格式不正确或者只有日期或者只有时间,都会报错或者显示不正确。像下面的我只有日期,取值只得到了一个0
补充一点:像我上面红框圈出来的,大家在编程的时候,一定要保持一致,不能上面用了s8601dt.的格式,format的时候又用yymmdd16.的格式,要不然会报错。
对不起,是我错了,没有yymmdd16.这种格式,因为yymmdd代表年月日没有时间,不用保持一致,我上次可能是在处理包含时间的字符的时候出错了,所以以为不能混用。但是我刚试了一下,比如is8601da.和yymmdd10.是可以混用的。
二:获取今天的时间,today函数
你时间日期都需要就用is8601dt.格式,只要日期就用is8601da.格式
。这个is8601da.我感觉跟yymmdd10.差不多
在帮DM导出报告的时候,比如报告名称是SDV_20210725,这个日期格式符合中国人读日期的习惯,可以用下面的函数:
SDV_%sysfunc(today(),yymmddn8.),输出出来的就是上面的格式,当然你也可以改成任何符合SAS日期要求的格式,比如
SDV_%sysfunc(today(),date9.),输出的就是date9.格式的日期,
如SDV_25JUL2021。
这样你就不用每次DM要求改日期的时候,去手动修改了。
其实网上有很多关于SAS日期的文章,有些我也是参考上面的文章,再结合我自己实际运用过程中出的一些问题,同时在写文章的过程中,举例子就发现了好几个问题,所以温故知新还是有必要的。
不想写了,就写这么多了吧。上次的XML文件在简书发不了,发链接就把我文章锁定了。看下什么时候建个QQ群吧,把文件分享到群里,需要的话大家还可以一起讨论。