gpt4 book ai didi

sas - 在一张表中查找值并根据 IF 条件 (MERGE/SQL) 添加到数据集?

转载 作者:行者123 更新时间:2023-12-04 05:59:29 26 4
gpt4 key购买 nike

我需要从一个表中查找数据,然后根据 if 条件将其添加到主数据表中:数据是否被标记为丢失。假设查找表包含国家和港口。主文件中缺少需要填写的端口名称。仅当 flag = 1(丢失)时,它才使用查找来填充这些。

此命令不起作用(不会填写它并且不会保留带有 Flag =0 的 obs):

proc sql; 
create table data.varswprice1 as
select *
from data.varswprice a left join data.LPortsFill b
on a.LoadCountry = b.LoadCountry and a.LoadArea = b.LoadArea
where LPortMiss = 1;
quit;

这是一个带有一些数据的示例......

查找表(3 个变量):
LoadPort LoadCountry  LoadArea
ARZEW ALGERIA NAF

MASTER(许多变量):
OBS    LoadPort  LoadCountry LoadArea  LPortMiss
1 ALGERIA NAF 1
2 ADELAIDE AUSTRALIA SEOZ 0

因此,需要根据LPortMiss = 1且LoadCountry和LoadArea相等的事实,用LOOKUP(ARZEW)中的第一个obs填充MASTER中的第一个obs。 LOOKUP 和 MASTER 中还有更多 obs,但我希望这能更好地说明问题。

最佳答案

您还可以在 proc sql 中使用 UPDATE 函数,这样就不必创建新的数据集。您可能还想重置 lportmiss 标志。

proc sql;
update master as a
set loadport=(select loadport from lookup as b
where a.LoadCountry=b.LoadCountry and a.LoadArea=b.LoadArea)
where lportmiss=1;
quit;

关于sas - 在一张表中查找值并根据 IF 条件 (MERGE/SQL) 添加到数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com