希望有人可以幫助我解決我的問題。
對于我作業的公司,我需要檢查每月發送給我的資料集中是否有任何可用資料。如果沒有可用的資料,那么 SAS 必須停止腳本并給出錯誤(這不是問題,問題出在該部分之前)。問題如下:我們使用非常大的資料集。將新資料與舊資料進行比較,以便檢查新資料和之前的 11 個月。我和我的流行病學家同事寫下我們想要檢查一個名為“deliveryfile”的預先設計的宏變數的月份。這無法更改,因此該宏變數需要包含在腳本中。我想創建一個回圈來檢查資料集中是否存在一個月(或幾個月)。如果它存在,什么都不會發生。如果不存在,則將月份添加到預先存在的資料集中。
示例資料集和宏變數:
DATA existingdataset;
INPUT yearmonth total;
DATALINES;
202108 400
202109 0
202110 450
;
RUN;
%LET deliveryfile = 202110, 202111;
使用上面的代碼,我需要撰寫一個腳本來檢查月份 202110 和 202111 是否已經存在于現有資料集中。202110 存在,所以什么都不會發生。202111 不存在,因此需要將其添加到“現有資料集”。只需添加月份,變數“總計”將為空/NULL。
這是我想出的,但我遇到了幾個錯誤,大多數與我如何使用 PROC SQL 有關。1號:
PROC SQL NOPRINT;
SELECT DISTINCT yearmonth INTO :yearmonth SEPARATED BY ', ' FROM existingdataset;
QUIT;
%PUT NOTE: yearmonth : &yearmonth; /*For verification */
%MACRO ADDING;
DATA existingdataset;
SET existingdataset;
IF
%DO i=1 %TO %SYSFUNC(COUNTW("&deliveryfile "));
%LET ymcontrol=%SCAN(%QUOTE(&deliveryfile ),&i,%STR( ));
&ymcontrol NOT IN (&yearmonth)
%END
THEN;
PROC SQL;
INSERT INTO existingdataset
SET yearmonth= &ymcontrol;
QUIT;
END;
RUN;
%MEND ADDING;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416329.html
標籤:
