作者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/cn.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