对于SAS数据步骤中的like
运算符(sql),我们有其他选择吗?我使用以下代码来满足我的要求。但它不起作用。
IF var1 ne : 'ABC' then new_var=XYZ;
请任何人建议这里面有什么错误,或者向我建议这种情况下的正确用法。
谢谢,
在datastep中,"if"可以与"index/find/fidw"一起使用,但如果要使用"like",则必须同时使用"where"one_answers"like"。
data want;
set sashelp.class;
where name like 'A%';
run;
您可以使用find
函数,例如:
data want;
set sashelp.class;
if find(name,'e') then new_var='Y';
run;
使用的冒号运算符只比较以带引号的字符串"ABC"开头的值。本质上,SAS比较2个值,截断为2的最小长度。因此,如果var1
中的所有值都超过3个字符,则在与"ABC"进行比较之前,它会将值截断为3个字符。
因此,它不同于sql中的like
函数,后者与%
通配符运算符一起使用,以确定是查看字符串的开头、结尾还是任何位置。
要复制like
,您需要使用一个函数,如@Amir推荐的find
,或在这种情况下也常用的index
。