作者dofu1943 (那就念吧~~)
看板Statistics
標題[程式] sas迴圈一直寫錯
時間Mon Jan 4 22:23:51 2021
[軟體程式類別]:
SAS
[程式問題]:
資料處理
[軟體熟悉度]:
新手
[問題敘述]:
我有10年份的檔(a00,a01,a02......以此類推)
這10個檔都有相同欄位
我想把這10個檔中的F3這個欄位,不屬於空值的都刪掉
也就是
data a00_1;
set a00;
if f3~='' then delete;
run;
但要做10次
可能有版友會問
為什麼不把10個檔先SET在一起,之後在一併刪除
因為檔案很大,SET在一起要花很多時間
所以我傾向先把不要的資料去除後再SET
我參考網路上寫迴圈的範例
https://bit.ly/2LgS4M8
以及
http://biostat.tmu.edu.tw/oldFile/enews/ep_download/20rb.pdf
寫了兩種迴圈,但都無法成功
[程式範例]:
[第1種]
%macro test_del;
%do i=0 %to 9;
data a0&i_1;
set a0&i;
if f3~='' then delete;
RUN;
%end;
%mend;
%test_del;
[第2種]
%macro multrep(startyear,stopyear);
%do yrvalue=&startyear %to &stopyear;
data a&yrvalue_1;
set a&yrvalue;
if f3~='' then delete;
RUN;
%end;
%mend multrep;
%multrep(00,09)
因為錯誤訊息很大一串
我覺得應該是我基本語法就有問題
所以錯誤訊息就先不貼
不知道錯在哪裡,懇請版友指點
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.77.66 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Statistics/M.1609770234.A.DCF.html
1F:推 imaltar: 第一個macro , a0&i_1改成a0&i._1 01/04 22:46
2F:推 nkes60917: 第二個macro &yrvalue後面加一個.就可以了 01/05 00:14
3F:→ nkes60917: 如果你沒有加他會把後面的一起讀進去認定是一個macro v 01/05 00:14
4F:→ nkes60917: ariable 01/05 00:14
5F:→ nkes60917: 也就是說他找不到&yrvalue_1 01/05 00:16
真的成功了耶
感謝感謝
這個問題至少讓我困惑了5年吧
原來要加.
可是這個語法的邏輯是怎麼知道的
我GOOGLE網頁都沒找到
※ 編輯: dofu1943 (210.241.87.243 臺灣), 01/08/2021 17:24:18