之前讓ChatGPT學習了生成測試數(shù)據(jù)集,連續(xù)型變量描述統(tǒng)計和組間比較,分類變量描述統(tǒng)計??ǚ綑z驗和fisher精確檢驗代碼都非常簡單,沒有單獨做分享。這些需求的特點是,實現(xiàn)的方法比較明確單一,相對固定,歷史上的代碼比較成熟。
要想實現(xiàn)將日期變量填補這一個需求。是需要進行邏輯判斷的,能實現(xiàn)這個需求的代碼也比較多樣,需要自己進行搭配和組合。
首先將自然語言轉換為編程邏輯,然后再從SAS的語法中選擇合適的函數(shù)和語句,組合在一起來實現(xiàn)需求,對于初學者還是有一定難度的。特別是,如果不了解其中有的函數(shù),就需要寫更長的代碼來替代。
首先把日期往前填補。如果日缺失,則填補為1日;如果月缺失,則填補為1月1日。

這里AI給出了一段代碼,使用了MISSING, INDEX, SUBSTR, CATS INPUT函數(shù)。整體邏輯是不錯,選用的SAS函數(shù)不算最簡化的,但也能滿足需求。在語法上,沒有意識到YYMMDD10.格式的值是類似于”YYYY-MM-DD”這樣的。需要將“01“和”0101“更新為”-01“和”-01-01“,整段代碼就可以正常運行了。
然后把日期往后填補,如果日缺失,則填補為當月最后一天;如果月和日都缺失,則填補為當年最后一天。這比往前填補,難度更大。因為每個月的最后一天是不固定的。不能簡單的拼接。

這里她想到使用INTNX來實現(xiàn)這個需求。但是語法并沒有寫對。她這里寫出來的是,下一個月的最后一天,并且減1天。另外,這段代碼的先后順序也有問題,當變量DATE缺失時,本身缺失值無法在INTNX函數(shù)中運算。所以需要先對DATE變量進行一個填充。

這里,她對代碼進行了簡化。但是核心的需求還是沒有實現(xiàn)。需要先對變量進行填補,然后再取當月或當年最后一天。
又跟AI扯了一會關于INTNX函數(shù)的應用。
讓我們來看最終成果吧。

這里AI吸納了我給他的代碼,使用了LENGTH, INPUT, INTNX, STRIP, “||”等函數(shù),完美地將日期填補為當月或當年最后一天。
整個代碼從函數(shù)的選擇,到語句的使用,到排版和縮進,到最后考慮了數(shù)據(jù)不滿足前三種情況時預警,都很漂亮,沒有什么可以挑剔的。
本文章首發(fā)于公眾號【SAS編程未來】