类似于SAS数据步骤中的操作员



对于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

最新更新