我试图找出如何在SAS DATA步骤中测试字符串中是否包含变量值。 假设我有以下内容:
Variable='some string'
String='ABC;EFG;IJKL;MNOPQ'.
在以下情况下,我想构建一个返回“确定”的测试
:Variable ='ABC'
Variable ='EFG'
Variable ='IJKL'
Variable ='MNOPQ'
否则返回“ NOT OK”;
我有以下代码:
FIND(String,TRIM(Variable)) GE 1 THEN PUT 'OK';
如果
,前一行将使测试返回OK。Variable = 'AB' ;
Variable = 'G;IJKL;M' ;
Variable = ';' ;
...
那不是我想要的。
你有什么主意吗? 谢谢
答案 0 :(得分:1)
以下代码利用indexw()
作为单词分隔符,使用了;
:
data have;
string = 'ABC;EFG;IJKL;MNOPQ';
input variable $;
datalines4;
ABC
EFG
IJKL
MNOPQ
AB
G;IJKL;M
;
;;;;
data want;
set have;
length result $ 8;
result = ifc(indexw(string,strip(variable),';'),'OK','NOT OK');
run;
答案 1 :(得分:1)
使用FINDW()函数。您可以告诉它哪些字符用于标记单词的结尾。您还可以使用修饰符选项告诉它自动修剪尾随空格和/或忽略大小写。它将返回字符串中找到变量值的位置。
location=findw("ABC;EFG;IJKL;MNOPQ",var,';','t');
,值为0,表示未找到。由于SAS会将任何非零值都视为true,因此您只需在IF语句中使用结果即可。
if findw("ABC;EFG;IJKL;MNOPQ",var,';','t') then put var 'FOUND';
else put var 'NOT FOUND';