如何在数据步骤(SAS)中使用数组对数据子集?
上面的代码不起作用。我试图只显示其中一个arrayname列包含“x”的观察结果如何在数据步骤(SAS)中使用数组对数据子集?,sas,subset,datastep,Sas,Subset,Datastep,上面的代码不起作用。我试图只显示其中一个arrayname列包含“x”的观察结果 尝试使用WHICHC来过滤记录 它不起作用的原因是,如果遇到false值,则子集if将立即返回,而不会继续处理。这相当于: DATA output; SET arbitrary_table; ARRAY arrayname $ arrayname_1 - arrayname_10; if whichc('x', of arrayname(*)); RUN; 您需要做的是识别任何值是否为真
尝试使用WHICHC来过滤记录 它不起作用的原因是,如果遇到
false
值,则子集if
将立即返回
,而不会继续处理。这相当于:
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
if whichc('x', of arrayname(*));
RUN;
您需要做的是识别任何值是否为真,并且仅当该值为真时才识别if
。您可以使用Reeza指出的(如果找到您要查找的值,则返回真值;如果找不到,则返回假值);或者您可以以类似的方式进行迭代,如下所示:
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;
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;
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;