포스팅 목차
* 질 문 : http://cafe.daum.net/statsas/B3m/12773
* 최홍규님 답변 : http://cafe.daum.net/statsas/B3m/12774
* 저의 답변 : http://cafe.daum.net/statsas/B3m/12776
********************************************************;
* 최홍규 님 답변;
********************************************************;
/*
array에 넣어서 do loop로 돌리면 되겠네요.
질문에서 이미 말씀하셨던 바 그대로.. ^^;
*/
DATA one;
INPUT cmpnm $60.;
CARDS;
(합자)칠칠공사
신광산업(합자)
동해화물(합명)
(의)동화의료재단
은성관광(합)
(합자)한도요업
(의)성경의료재단
(자)세종
(합자)정인케이아이씨
(명)푸른도시
(자)진양개발
한경건설(자)
(의)무학의료재단
(합자)조치원마트
;
RUN;
* 제거할 문자열을 데이터셋으로 ;
data two;
input aux $ @@;
cards;
(합자) (합명) (합) (의) (명) (자)
;
RUN;
* array에 잡기 위해서 갯수를 매크로변수로..;
proc sql noprint;
select count(*) into :c from two;
quit;
* 먼저 array를 채우고 나서 치환대상이 되는 데이터를 읽어서 tranwrd로 변환;
data three;
if _n_=1 then do;
array x(&c) $;
retain x;
do i=1 to &c;
set two;
x(i)=aux;
end;
end;
set one;
do i=1 to &c;
cmpnm=compress(tranwrd(cmpnm,trim(x(i)),""));
end;
keep cmpnm;
run;
********************************************************;
* 저의 답변;
********************************************************;
* 함수로 처리해 보았습니다. ( )안의 글자를 제거 로직인데,
만약 ( ) 안에 문장중에서 삭제하면 안된는 단어가 있다면 추가 로직이 필요합니다.;
DATA one;
INPUT cmpnm $60.;
CARDS;
(합자)칠칠공사
신광산업(합자)
동해화물(합명)
(의)동화의료재단
은성관광(합)
(합자)한도요업
(의)성경의료재단
(자)세종
(합자)정인케이아이씨
(명)푸른도시
(자)진양개발
한경건설(자)
(의)무학의료재단
(합자)조치원마트
;
RUN;
data back;
set one;
var1 = kindex(cmpnm,'(');
var2 = kindex(cmpnm,')');
var3 = ksubstr(cmpnm,var1,var2);
var4 = compress(tranwrd(cmpnm,trim(var3)," "));
run;
'SAS' 카테고리의 다른 글
[SAS 단축키] SAS 확장편집기 단축키 (0) | 2018.11.18 |
---|---|
표준화 회귀 계수 생성하기 (0) | 2018.10.30 |
[Re-scaling] 관측치 범위 재조정 / 표준화 / 정규... (0) | 2018.10.30 |
[스케쥴] SAS 스케쥴 작업 사용하기 (0) | 2018.10.30 |
[데이터 EXPORT] 마지막 변수의 공백 포함하여 방... (0) | 2018.10.30 |
댓글