gpt4 book ai didi

sas - 检查项目是否在 SAS 列表中

转载 作者:行者123 更新时间:2023-12-05 09:00:38 26 4
gpt4 key购买 nike

我有一个 SAS 列表。这个 SAS 列表存储在一个宏变量中。请假设我没有导出此 SAS 列表的表。

SAS 列表包含以逗号分隔的名称。 SAS列表宏变量示例:

%LET sas_list = name1,name2,name3;

我想检查列表中是否存在宏变量“item”。

类似于:

%IF &item. IN &sas_list. %THEN %DO;
Whatever;
%END;

出于某种原因,我得到了错误:

“A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: name1 IN name1,name2,name3”

感谢您的帮助。

最佳答案

添加minoperatormindelimiter 系统选项。它们代表 Macro IN Operator 和 Macro IN Delimiter。

options minoperator mindelimiter=',';

%LET sas_list = name1,name2,name3;
%LET item = name1;

%IF &item. IN &sas_list. %THEN %DO;
%put &item is in &sas_list;
%END;

输出:

name1 is in name1,name2,name3

如果您想查找列表中的值,请通过 %eval 传递它。

options minoperator mindelimiter=',';

%LET sas_list = name1 name2 name3;
%LET item = name4;

%IF %eval(&item. IN &sas_list.) = 0 %THEN %DO;
%put &item NOT in &sas_list;
%END;

输出:

name4 is NOT in name1,name2,name3

请注意,如果您只想让 in 有选择地工作,您也可以直接在宏中提供这些选项。例如:

%macro foo / minoperator mindelimiter=',';
...
%mend;

关于sas - 检查项目是否在 SAS 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75299350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com