AI选的函数组合也挺有效【教ChatGPT学SAS 5填补日期缺失值】

之前让ChatGPT学习了生成测试数据集,连续型变量描述统计和组间比较,分类变量描述统计。卡方检验和fisher精确检验代码都非常简单,没有单独做分享。这些需求的特点是,实现的方法比较明确单一,相对固定,历史上的代码比较成熟。


要想实现将日期变量填补这一个需求。是需要进行逻辑判断的,能实现这个需求的代码也比较多样,需要自己进行搭配和组合。


首先将自然语言转换为编程逻辑,然后再从SAS的语法中选择合适的函数和语句,组合在一起来实现需求,对于初学者还是有一定难度的。特别是,如果不了解其中有的函数,就需要写更长的代码来替代。



首先把日期往前填补。如果日缺失,则填补为1日;如果月缺失,则填补为1月1日。

这里AI给出了一段代码,使用了MISSING, INDEX, SUBSTR, CATS INPUT函数。整体逻辑是不错,选用的SAS函数不算最简化的,但也能满足需求。在语法上,没有意识到YYMMDD10.格式的值是类似于”YYYY-MM-DD”这样的。需要将“01“和”0101“更新为”-01“和”-01-01“,整段代码就可以正常运行了。



然后把日期往后填补,如果日缺失,则填补为当月最后一天;如果月和日都缺失,则填补为当年最后一天。这比往前填补,难度更大。因为每个月的最后一天是不固定的。不能简单的拼接。

这里她想到使用INTNX来实现这个需求。但是语法并没有写对。她这里写出来的是,下一个月的最后一天,并且减1天。另外,这段代码的先后顺序也有问题,当变量DATE缺失时,本身缺失值无法在INTNX函数中运算。所以需要先对DATE变量进行一个填充。


这里,她对代码进行了简化。但是核心的需求还是没有实现。需要先对变量进行填补,然后再取当月或当年最后一天。



又跟AI扯了一会关于INTNX函数的应用。



让我们来看最终成果吧。

这里AI吸纳了我给他的代码,使用了LENGTH, INPUT, INTNX, STRIP, “||”等函数,完美地将日期填补为当月或当年最后一天。


整个代码从函数的选择,到语句的使用,到排版和缩进,到最后考虑了数据不满足前三种情况时预警,都很漂亮,没有什么可以挑剔的。


本文章首发于公众号【SAS编程未来】

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容