在 SAS 的 lookup table 中查找缺失值

Look up missing values in lookup table in SAS

我有一个 table 看起来像这样

(MAIN TABLE)
====================================================================================
|| TRANSACTION_ID || TRADE_PARTY_PREFIX || TRADE_PARTY_VALUE || TRADE_PARTY_TYPE
====================================================================================
| 1               | EXAMPLE             | 123456789           | Dealer
--------------------------------------------------------------------------------
| 2               | EXAMPLE             | 123456789           |
--------------------------------------------------------------------------------
| 3               | EXAMPLE_2           | 123456789           | Non-Dealer
--------------------------------------------------------------------------------
| 4               | EXAMPLE             | 987654321           |

我还有一个 table 看起来像这样

(LOOKUP TABLE)
=================================================================
|| TRADE_PARTY_PREFIX || TRADE_PARTY_VALUE || TRADE_PARTY_TYPE ||
=================================================================
| EXAMPLE             | 123456789           | Dealer
-----------------------------------------------------------------
| EXAMPLE             | 987654321           | Dealer

我想要一个 SAS 脚本,通过查找 table 中的 TRADE_PARTY_PREFIXTRADE_PARTY_VALUE 来替换 TRADE_PARTY_TYPE 中所有缺失的值(但是如果该列已填满,则不应触及该行。

类似于(伪代码):

for row in main_table:
    if row["trade_party_type"] is not null:
        print(row)
    else
        row["trade_party_type"] == lookup_table["trade_party_prefix"]["trade_party_value"]

不确定如何在 SAS 中执行此操作。

我会在 PROC SQL 步骤中使用 coalesce 函数,如下所示:

PROC SQL;
    CREATE TABLE WANT AS 
        SELECT a.transaction_id, a.trade_party_prefix, a.trade_party_value, coalesce(a.trade_party_type,b.trade_party_type) AS trade_party_type
            FROM dset1 a LEFT JOIN dset2 b
                ON a.trade_party_prefix = b.trade_party_prefix AND a.trade_party_value = b.trade_party_value;
QUIT;

coalesce 函数按顺序计算参数,returns 最初不计算为 NULL 的第一个表达式的当前值。