对于误导性(如果有)问题标题感到抱歉,因为我不知道如何在1个问题中表达我需要的内容。
我有一个数据集如下:
UserId Order Status
1 1 completed
1 2 completed
1 3 incompleted
2 1 incompleted
2 2 incompleted
我想选择那些没有完成状态的用户,例如,使用上面的数据集,我得到的结果将是
UserId
2
无论如何使用SAS datastep或PROC SQL获得上述结果?我们非常感谢您的帮助。
答案 0 :(得分:3)
为此,您可以使用NOT IN
子句,如下所示 -
SELECT DISTINCT Userid
FROM Your_Table_Name
WHERE Userid NOT IN
(SELECT Userid FROM Your_Table_Name WHERE Status = 'completed')
答案 1 :(得分:2)
这是一个数据步骤方法,如果您的数据已经排序,则不需要proc排序。
data have;
input UserId Order Status :$11.;
datalines;
1 1 completed
1 2 completed
1 3 incompleted
2 1 incompleted
2 2 incompleted
;
run;
proc sort data=have;
by userid order;
run;
data want (keep=userid);
set have;
by userid;
if first.userid then num_complete=0;
num_complete+(status='completed');
if last.userid and num_complete=0 then output;
run;