【发布时间】:2015-08-05 10:08:03
【问题描述】:
这里的新 SAS 用户:我有一个由 PROC SQL 语句创建的数据集(表):
proc sql;
create table work.dm_1 as
select distinct a.subject, c.dsyn as DSYN_DS_1, d.dsyn as DSYN_DS_2
from s_raw.dm_1 a
left join work.edt_eg b
on a.subject=b.subjid
left join s_raw.ds_1 c
on a.subject=c.subject
left join s_raw.ds_2 d
on a.subject=d.subject
where c.DSYN='NO' and d.DSYN='NO';
quit;
使用此表 (work.dm_1) 中的结果,我想修改另一个(现有)表(work.edt_ecg,从先前的过程创建)以选择匹配记录(使用 dm_1 中的主题和 edt_eg 中的 subjid) proc sql 上面的表,并更新表work.edt_ecg。我尝试了以下方法:
proc sql;
update table work.edt_eg as
select *
from work.edt_eg where subjid in (select distinct subject from work.dm_1);
quit;
但它不适合我!欢迎任何想法
【问题讨论】:
-
您可能会在使用
left join s_raw.ds_1 c时出错,然后在c.DSYN='NO'上进行过滤:当没有匹配的c 时,您会从a中丢失您的observation(1)。你应该写left join s_raw.ds_1 c on a.subject=c.subject and c.DSYN='NO'。您左侧的相同帐户加入d