2016-08-19 17 views
0

我想通過使用索引函數來比較A和B的字符串值。我想檢查A是否在其列中包含B.我知道如何做到這一點的唯一方法是索引,但問題是索引不允許列名參數。你必須輸入一個字符串值。SAS幫助:使用索引函數比較2列

試過這個:index(Address, HouseNumber)>0但它不起作用。

例子:

Address  HouseNumber  
123 Road  Road 

所以我想看看地址欄包含在該領域的門牌號值。它不會是直接匹配,而只是想檢查A是否包含字符串。我認爲使用宏變量或數組是解決方案,但我不知道如何去做。

+1

我想你在湯姆的下面有你的答案,但是如果你把代碼作爲完整的數據步驟複製你的問題,你的問題會得到更好的答案。 – Joe

回答

3

因爲所有變量都是固定長度的,所以您需要考慮SAS所執行的填充。

data have ; 
    length Address HouseNumber $50; 
    infile cards dsd dlm='|'; 
    input address housenumber ; 
cards; 
123 Road|Road 
;;;; 

data want ; 
    set have ; 
    if index(address,strip(HouseNumber)); 
run; 
+0

'FIND()'有''t'修飾符,可以爲你修剪,但要注意它會修剪兩個字段。 – Joe

+0

這條評論拯救了我的生命。我想知道爲什麼索引無效。我添加了strip(),並且它可以工作! – Paula

0

這是有效的 - 你試圖做什麼?

data _null_; 
    a = '52 Festive Rd'; 
    b = 'Festive'; 
    if index(a,b) then put 'yes'; 
    else put 'no'; 
run; 
+0

要查看問題,請在B的值的末尾添加一些空格,可以將它們包含在字符串文字中,也可以在賦值之前設置長度超過7個字符的長度。 – Tom

+0

是的,但不得不添加strip()。我早些時候嘗試過,但即使兩個字符串都相同,也不給我結果。謝謝! – Paula