示例33078:如何在库中的任何SAS®数据集中的任何变量中查找特定值

问题描述 投票:1回答:2

我需要帮助从SAS(http://support.sas.com/kb/33/078.html)修改此代码为:

  • 不区分大小写(因此不会忽视SMITH与史密斯对史密斯,我试过“upcase”但它不起作用)
  • 包括一个计数器(以便我可以控制是否知道第一次出现值,如果需要,可以显示该值出现的次数)
  • 允许部分搜索(此代码仅允许搜索完全匹配,这意味着我缺少许多可能在其下定义值的变量)

谢谢! :)

search sas dataset libraries
2个回答
1
投票

来自你的评论:

data _null_; 
  set &librf..&&ds&i;
%do j=1 %to &numvars;
   if INDEX(upcase(&&var&j),"&string") >0 then 
/*modified this part to satisfy the first and third things that I wanted*/
      put "String &string found in dataset &librf..&&ds&i for variable &&var&j"
   ; 
%end; 
run;

所以只需添加代码来增加计数器。您想要计算观察或事件吗?也就是说,如果相同的观察结果有多次点击,它会被视为一个还是多个?

计算每次点击更容易:

data _null_; 
  set &librf..&&ds&i;
%do j=1 %to &numvars;
   if INDEX(upcase(&&var&j),"&string") >0 then do;
      _count+1;
      put "String &string found in dataset &librf..&&ds&i for variable &&var&j" _count=;
   end; 
%end; 
run;

以下是您对每次观察的计算方法。

data _null_; 
  set &librf..&&ds&i;
%do j=1 %to &numvars;
   if INDEX(upcase(&&var&j),"&string") >0 then do;
      _hit=1;
      put "String &string found in dataset &librf..&&ds&i for variable &&var&j";
   end; 
%end;
   if _hit then do;
      _count+1;
      put "Number of observations so far=" _count ;
   end; 
run;

0
投票

假设您正在运行示例中的代码。我会改变比较表达式。我会把它变成一个宏参数。您可以使用FIND / W / C,正则表达式等。

EXP =%STR(找到(&& VAR&J ' - 目标 - ', 'IT')),

%unquote(&exp)替换为红色下划线。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.