SAS - 如何在字符串中查找与指定子字符串相似的变量名
SAS - how to find variable name in string which is similar to a specified sub-string
我想查找字符串中是否存在变量 (&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 字符串中指定的区域变量。这仅在 &fixed 字符串中首先指定 regio 变量时有效,但在这种情况下它是第二个变量,因此这不起作用。我找不到从 &fixed 字符串创建变量(字)计数值以能够使用扫描功能的可靠方法。在这种情况下,我知道它应该是 2。如有任何帮助,我们将不胜感激。
使用数据阶跃函数可以更容易地看到这一点。您要做的是使用 index
结果通知 substring
,然后在该子字符串上使用 scan
。这样 总是 第一个词。 scan
找单词的哪个#,记住,不是哪个位置。如果您要 find
整个单词,您可以使用 findw
或 indexw
,但由于您只找到单词的一部分,但想要返回整个单词,所以您不能真的这样做了。
data want;
fixed="variable1 region1 variable3";
if index(fixed,"regio") then do;
regioxc = scan(substr(fixed,index(fixed,"regio")),1);
end;
put _all_;
run;
在宏变量中你仍然可以这样做:
%LET fixed = %STR(variable1 region1 variable3);
%LET regioxc = %SCAN(%substr(&fixed,%index(&fixed,regio)),1);
%put &=regioxc;
(我省略了 %if
以便更容易看到它的工作,当然在生产代码中把它放回去。)
我想查找字符串中是否存在变量 (&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 字符串中指定的区域变量。这仅在 &fixed 字符串中首先指定 regio 变量时有效,但在这种情况下它是第二个变量,因此这不起作用。我找不到从 &fixed 字符串创建变量(字)计数值以能够使用扫描功能的可靠方法。在这种情况下,我知道它应该是 2。如有任何帮助,我们将不胜感激。
使用数据阶跃函数可以更容易地看到这一点。您要做的是使用 index
结果通知 substring
,然后在该子字符串上使用 scan
。这样 总是 第一个词。 scan
找单词的哪个#,记住,不是哪个位置。如果您要 find
整个单词,您可以使用 findw
或 indexw
,但由于您只找到单词的一部分,但想要返回整个单词,所以您不能真的这样做了。
data want;
fixed="variable1 region1 variable3";
if index(fixed,"regio") then do;
regioxc = scan(substr(fixed,index(fixed,"regio")),1);
end;
put _all_;
run;
在宏变量中你仍然可以这样做:
%LET fixed = %STR(variable1 region1 variable3);
%LET regioxc = %SCAN(%substr(&fixed,%index(&fixed,regio)),1);
%put &=regioxc;
(我省略了 %if
以便更容易看到它的工作,当然在生产代码中把它放回去。)