2012-11-06 87 views
1

我有一個空間分隔的地址字符串,我試圖用第三個替換第二個參數。我在下面發佈的代碼不起作用。請幫我糾正它。正則表達式的SAS代碼

data sasuser.word_exchange; 
set sasuser.testnew3; 
retain re1 re2 ; 
if _N_ = 1 then do; 
re1 = prxparse('s/DR/DRIVE/'); 
re2= prxparse('s/AVE/AVENUE/'); 
end; 
call prxchange(re1,-1, strip(CITYSTATE)); 
call prxchange(re2,-1, strip(CITYSTATE)); 
RUN; 

回答

1

您不能在該上下文中使用STRIP。這裏是一個使用/ io的例子(i =大小寫不敏感,o =編譯一次,所以不需要if) = 1塊。根據您的數據,'我'可能不受歡迎。

data have; 
input @1 CITYSTATE $200.; 
infile datalines truncover; 
datalines; 
2001 Bellini Ave Michigan City IN 58431 
123 Anywhere Dr Boston MA 0
456 Nowhere Lane New York City NY 10035 
;;;; 
run; 

data want; 
set have; 
re1 = prxparse('s/DR/DRIVE/io'); 
re2= prxparse('s/AVE/AVENUE/io'); 
call prxchange(re1,-1, CITYSTATE); 
call prxchange(re2,-1, CITYSTATE); 
put CITYSTATE=; 
RUN; 
+2

我還注意到,這可能是一個非常糟糕的主意,因爲這裏構思。即使它是「Driscoll CT」 - >「DRIVEiscoll,CT」的一部分,這會將所有「DR」更改爲「DRIVE」。如果要驗證您是否在更改「DR」或類似內容,則需要包含邊界檢查。 – Joe