如果一个字符串包含SAS中的特定子字符串,那么测试该字符串的解决方案是什么?
我试图弄清楚如何在SAS数据步骤中测试字符串中是否包含变量值。 假设我有以下几点:如果一个字符串包含SAS中的特定子字符串,那么测试该字符串的解决方案是什么?,sas,Sas,我试图弄清楚如何在SAS数据步骤中测试字符串中是否包含变量值。 假设我有以下几点: Variable='some string' String='ABC;EFG;IJKL;MNOPQ'. 我想构建一个返回“OK”的测试,如果: 变量='ABC' 变量='EFG' 变量='IJKL' 变量='MNOPQ' 否则返回“不正常” 我有以下代码: FIND(String,TRIM(Variable)) GE 1 THEN PUT 'OK'; 如果出现以下情况,前一行将使测试返回OK Varia
Variable='some string'
String='ABC;EFG;IJKL;MNOPQ'.
我想构建一个返回“OK”的测试,如果:
- 变量='ABC'
- 变量='EFG'
- 变量='IJKL'
- 变量='MNOPQ'
FIND(String,TRIM(Variable)) GE 1 THEN PUT 'OK';
如果出现以下情况,前一行将使测试返回OK
Variable = 'AB' ;
Variable = 'G;IJKL;M' ;
Variable = ';' ;
这不是我想要的
你知道吗?
谢谢以下代码使用了
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;
使用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';