1

数据如下所示:

data test;
input v1 $ v2 v3;
datalines;
AB 4 5
AB 0 4
A 4 .
A 1 0
;;;;
run;

V2是A的测试结果,V3是B的测试结果。

如果 V1 不包含字母“B”并且它有一个数字 0,则应将其替换为数字零。

逻辑应该是这样的:

if V1 does not contain A AND V2 = 0 then replace V2 = .
if V1 does not contain B AND V3 = 0 then replace V3 = .

我该怎么做呢?

4

2 回答 2

1

您可以在 sql 步骤中使用CASELIKE

例如

proc sql noprint;

  create table test1 as
  select V1, case
                 when V1 NOT LIKE '%A%' and V2 = 0 then .
                 else V2
             end as V2,
             case
                 when V1 NOT LIKE '%B%' and V3 = 0 then .
                 else V3
             end as V3
   from test
   ;
quit;
于 2013-07-31T13:47:38.050 回答
0

您可以使用 FIND 或 INDEX(两者的工作方式相似,选项略有不同)。我不完全理解您的逻辑,因为它不一致,但使用您的示例逻辑:

if find(v1,"A") = 0 and v2=0 then call missing(v2); *or then v2=. or then v2=whatever;

B 和 V3 类似。

于 2013-07-30T19:50:24.440 回答