DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
DO i = 1 TO 10;
IF arrayname(i) = "x";
END;
RUN;
以上代码无效。我试图只显示其中一个arrayname列包含“x”的观察结果。
答案 0 :(得分:0)
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
if whichc('x', of arrayname(*));
RUN;
尝试使用WHICHC来过滤记录。
答案 1 :(得分:0)
它不起作用的原因是,if
的子集将立即return
,如果遇到false
值则不会继续处理。这相当于:
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
DO i = 1 TO 10;
IF arrayname(i) ne "x" then delete;
END;
RUN;
您需要做的是确定任何值是否为真,并且if
仅在该值为真时确定。您可以使用whichc
作为Reeza指出(如果找到您要查找的值,则返回TRUE值,如果没有,则返回FALSE);或者你可以用类似的方式迭代:
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
has_x=0;
DO i = 1 TO 10;
IF arrayname(i) = "x" then has_x=1;
END;
if has_x;
RUN;