SAS查找文本(部分)并删除观察结果

SAS查找文本(部分)并删除观察结果,sas,Sas,数据如下所示: 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,则应将其替换为数字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

数据如下所示:

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,则应将其替换为数字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 = .
如何做到这一点?

您可以使用“查找”或“索引”(两者工作方式类似,选项略有不同)。我不完全理解您的逻辑,因为它是不一致的,但使用您的示例逻辑:

if find(v1,"A") = 0 and v2=0 then call missing(v2); *or then v2=. or then v2=whatever;
B和V3类似。

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

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

类似于B和V3。

您可以在sql步骤中使用
CASE
LIKE

乙二醇


您可以在sql步骤中使用
CASE
LIKE

乙二醇


为清晰起见,编辑了一些;请更新您的问题,使初始逻辑语句和第二对不相同的逻辑语句之间更加清晰。谢谢Joe。你的回答对我帮助很大。我使用index创建了另一个变量来显示字符是否存在。然后我将“missing”分配给那些不包含字符的变量,并删除了我使用的新变量;请更新您的问题,使初始逻辑语句和第二对不相同的逻辑语句之间更加清晰。谢谢Joe。你的回答对我帮助很大。我使用index创建了另一个变量来显示字符是否存在。然后,我将“missing”赋值给不包含该字符的变量,并删除了我使用的新变量。