【发布时间】:2015-09-11 15:16:33
【问题描述】:
我想查找一个变量是否存在于字符串中(&fixed),如果存在,是哪个字号。
%LET fixed = %STR(variable1 region1 variable3);
%IF %INDEX(&fixed, regio) %THEN
%DO;
%LET regioxc = %SCAN(&fixed, %SYSFUNC(FIND(&fixed, regio)));
%END;
我想创建一个名为 regioxc 的宏变量,它可能一次等于 region1,下一次运行宏时,它可能等于 regiodc,或其他值(始终以开头字符串 'regio' ),如果这是在 &fixed 字符串中指定的区域变量。这只适用于 regio 变量首先在 &fixed 字符串中指定的情况,但在这种情况下它是第二个变量,所以这不起作用。我找不到从 &fixed 字符串创建变量(字)计数值以便能够使用扫描功能的稳健方法。我知道它应该是 2,在这种情况下。非常感谢这里的任何帮助。
【问题讨论】:
-
您能否提供一些示例输入和结果?我很难准确理解您在这里要做什么。
-
抱歉,这很乱,不知道如何分行。我想要结束的是: %LET fixed = %STR(variable1 region1 variable3); %IF %INDEX(&fixed, regio) %THEN %DO; %LET regioxc = %SCAN(&fixed, 2); %结尾; ®ioxc = 区域 1。下次运行时,固定字符串已更改为以下内容: %LET fixed = %STR(variable1 regio44 variable3); %IF %INDEX(&fixed, regio) %THEN %DO; %LET regioxc = %SCAN(&fixed, 2); %结尾; ®ioxc = regio44.
-
下一次可能是 %LET fixed = %STR(var1 var2 regioxxd); SCAN 的值需要找到这个区域变量,所以在这种情况下它应该是 3。
-
您可以通过将其编辑到问题中来将其放在单独的行中:) 一个很好的例子是在表格或 SAS 代码中具有三个或四个输入字符串和三个或四个等效的所需输出。