数据如下所示:
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 = .
我该怎么做?
答案 0 :(得分:1)
您可以使用CASE
和LIKE
例如
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;
答案 1 :(得分:0)
您可以使用FIND或INDEX(两者的工作方式相似,选项略有不同)。我并不完全理解你的逻辑,因为它是不一致的,而是与你的示例逻辑一致:
if find(v1,"A") = 0 and v2=0 then call missing(v2); *or then v2=. or then v2=whatever;
类似于B和V3。