我正在嘗試創建一個增量構建的散列變量。我試圖解決的具體問題是,我有貨幣對的一列:在SAS中構建和使用增量散列變量
|--------------------|
| ID | CurrencyPair |
|----|---------------|
| 1 | USD/GBP |
| 2 | GBP/USD |
| 3 | USD/BRL |
| ...| ... |
我想爲行1和貨幣對第2行貨幣對(USD/GBP)和(GBP/USD)到被認爲是一樣的。所以我想實現如下算法:
- 創建一個空列
CurrencyPairRecode
- 創建一個散列變量
declare hash h(); h.defineKey('k'); h.defineData('d');
對於數據的每一行,查找是否在哈希表中存在的貨幣對。如果是這樣的
CurrencyPairRecode
值相同CurrencyPair
RC = h.Check(標號:CurrencyPair) IF(RC = 0)THEN CurrencyPairRecode = CurrencyPair
如果沒有,檢查是否翻轉貨幣對在哈希表中。如果是,
CurrencyPairRecode
是翻轉值CALL CATX( 「/」,翻轉SUBSTR(SETTLEMENT_EXCHANGE_RATE_BASIS,4,3),SUBSTR(SETTLEMENT_EXCHANGE_RATE_BASIS,1,3));
flip_rc = h.Check(key:FLIPPED); IF(flip_rc = 0)THEN CurrencyPairRecode =翻轉;
如果兩者都不相同,則
CurrencyPairRecode
與CurrencyPair
相同並將CurrencyPair
添加到散列表。 (key:CurrencyPair,data:1);如果(rc^= 0 AND flip_rc^= 0)則返回 。 CurrencyPairRecode = CurrencyPair
我已經試過這段代碼,但得到錯誤。我對SAS完全陌生,所以不確定如何排除故障。所有的幫助表示讚賞。
存儲在一個單一變量的貨幣對,或者在一對變量? – Joe