2016-08-31 2 views
0

"LIMITED", "LTD", "CORPORATION", "GMBH", "AG", "SDN", "BHD" INC "문자열을 내 Customer_Name 변수에서 가져옵니다. SAS에서 compress 기능을 시도했습니다. Customer_Name1 = 압축 (Customer_Name, 'LIMITED', 'LTD', 'GMBH');SAS의 원래 문자열에서 문자열 목록을 제거하려고합니다.

하지만 무엇입니까 오류 -

압축하여 함수 호출에 너무 많은 인수가 있습니다.

해결 방법을 제안하십시오.

+0

압축은 단어가 아닌 문자를 제거합니다. TRANWRD()를보십시오. – Reeza

답변

1

이것을 수행하기 위해 정규 표현식을 사용합니다. 제거 할 단어를 매크로 변수에 저장하고 call prxchange을 사용하여 이름 내에서 검색하고 제거하십시오. 단어는 |으로 구분되며 정규 표현식 언어는 or입니다.

%let vals = LIMITED|LTD|CORPORATION|GMBH|AG|SDN|BHD|INC; 

data have; 
input name $20.; 
datalines; 
a ltd 
b limited 
c corporation 
d corp 
e gmbh 
f test 
g ag 
i sdn 
j bhd 
aggregate ag 
income inc 
; 
run; 

data want; 
set have; 
regex = prxparse("s/\b(&vals.)\b//i"); /* /b signifies a word boundary, so it will remove the whole words only */ 
call prxchange(regex,-1,name); 
drop regex; 
run; 
관련 문제