在SAS中查找查找表中的缺失值

时间:2015-06-25 13:23:43

标签: sas lookup

我有一张看起来像这样的表

(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_TYPETRADE_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中执行此操作。

1 个答案:

答案 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的第一个表达式的当前值。