有关ADSTDTC/AEENDTC日期填补引发的几点思考
1.首先,在SAS中,没有合适的format可以对“2020-06”字符型日期直接转为数值型。无论是用yymmdd6.有关的格式还是yymmn6.格式。
关于yymmn6.格式:是一种将“202006”这种字符型日期转为数值型的format;但转换之后的数值型日期指的是当月的第一天即20200601号的数值型日期时间,下面程序运行之后结果相等。
yymmn6.格式的使用与anydtdte.格式使用差不多,将需要填补的日期转换为任何日期格式,只可以用来转为数值型(且转为的数值型为当月的第一天),且对2010-10-01这种的完整日期格式无效,从数值型转为字符型用anydtdtc.这个格式会报错,
2.日期变量的比较字符型可以和字符型比较,数值型可以和数值型比较,且不报错,因此进行日期变量之间的比较时候不必转为数值型,无论字符型日期完整不完整都可以进行比较。
3.关于日期填补,示例请看如下:
intck函数与intnx很类似,第一个用于计算两个变量之间的间隔,第二个用于计算在第一个变量固定间隔多少个之后的值是多少。
以此为例:intnx('month', input(aa, anydtdte.), 0, 'e'),intnx函数的参数解释如下:
'month':表示在月的基础上按间隔递增。
input(aa, anydtdte.):将需要填补的日期转换为任何日期格式。
0:表示在本月的基础上递增(如果想在下月就写1,以此类推)。
'e':表示递增到月末(如果是月初就是'b',月中就是'm')。
我在网上也找到了其他填补的方法:
首先用year()/month()/day()函数取出首次治疗日期的单个部分来,然后从开始日期或结束日期中用scan函数用T和-作为分隔符提取年、月、日。然后对于组合的日期采用mdy()函数,此函数共三个参数,分别是月、日、年,用逗号分割三个参数
4.需要计算AE的持续时间,想要的结果是xx天xx时xx分的形式。天好做,用结束日期-开始日期+1.但是计算小时分钟,因为直接用intck函数计算的是间隔的小时数或分钟数而不是,真正零碎的不到一天或不到一小时的时间,因此需要除以相应的分母,比如24小时、60分钟, 并根据结果是正是负增加相应的24或60,取余数计算。如下所示.
版权声明:
作者:dingding
链接:https://www.techfm.club/p/186483.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论