我正在尝试使用任务在Enterprise Guide中执行此操作,否则我只会使用数据步骤。
在数据步骤中,这将是:
data names;
input name $;
datalines;
John
Mary
Sally
Fred
Paul
;
run;
data check;
input name $;
datalines;
Mary
Fred
;
Proc sort data=names; by name; run;
Proc sort data=check; by name; run;
Data work.not_in_check;
merge names(in=n) check(in=c);
by name;
if n and not c;
run;
答案 0 :(得分:9)
这是一种方式。肯定有很多其他人。
proc sql;
create table not_in_check as
select name
from names
where name not in (select name from check);
quit;
答案 1 :(得分:7)
另一个微小的变化是:
proc sql;
create table not_in_check as select
a.* from names as a left join
check as b on
a.name=b.name
where b.name is null;
quit;
答案 2 :(得分:1)
以下方法是将记录存在于一个表而非另一个表中的非常简单的方法。
创建表new,其中包含sex = M的记录,查询后的结果将是sex = F的记录。
示例:
data new;
set sashelp.class;
where sex = 'M';
run;
proc sql;
create table new1 as
select * from sashelp.class
except all
select * from new;
quit;
将代码测试我的实际数据集,大约100k obs并更新结果。
P.S:我知道这个问题已被问及已被回答并被遗忘,我正在寻找一种方法来完成上述工作并且无法在任何地方找到直接答案。所以,添加它可能会派上用场。 :)我的第一个答案也是。 :)
答案 3 :(得分:0)
proc sql;
create table inNamesNotIncheck
as
select *
from names n
where not exists
(select name
from check c
where n.name=c.name);
quit;