我有一张看起来像这样的表
(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 |
我有另一张看起来像这样的表
(LOOKUP TABLE)
=================================================================
|| TRADE_PARTY_PREFIX || TRADE_PARTY_VALUE || TRADE_PARTY_TYPE ||
=================================================================
| EXAMPLE | 123456789 | Dealer
-----------------------------------------------------------------
| EXAMPLE | 987654321 | Dealer
我想要一个SAS脚本,通过在查找表中查找TRADE_PARTY_TYPE
和TRADE_PARTY_PREFIX
来替换TRADE_PARTY_VALUE
中的所有缺失值(但它不应该触及该行如果该列已填写。
(伪代码)中的某些内容:
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中执行此操作。
答案 0 :(得分:2)
我会在coalesce
步骤中使用PROC SQL
函数,如下所示:
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函数按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。