나는 그것이 자동화 된 방식에서 완전히 코드이 실용적인 의심,하지만 난 두 단계 접근 방식을 제안했다.
첫째, 가능한 일치를 식별합니다. 많은 잠재적 인 솔루션을 사용할 수 있습니다. 이것은 StackOverflow의 솔루션보다 훨씬 더 복잡하지만 당신은 이미 몇 가지 제안을 가지고, 당신은 SAS 함수와 호출 루틴 (COMPGED, SPEDIS, COMPLEV, COMPCOST, SOUNDEX 많은 설명하는 등 this paper로, 인터넷에 논문을 볼 수 있습니다 , COMPARE). 상당히 넓은 뇌졸중이 방법
사용 - 즉, 위음성에 잘못된 반응을 선호합니다. 단어를 일대일로 식별하는 데 집중하십시오. , original, translation
의 데이터 집합을 구축
Delli, Delhi
Deli, Delhi
Dalhi, Delhi
같은
등
그리고 시각적으로 파일을 검사하고 필요에 따라 수정을 (즉, 잘못된 반응을 제거). 이 데이터 집합을 일단
, 당신은 결과를 이용하기위한 몇 가지 옵션이 있습니다. 별도의 필드로 도시 이름이 이미 있거나 별도의 필드에 입력하거나 scan
을 사용하여 쉽게 도시를 식별 할 수있는 경우 형식 솔루션을 사용할 수 있습니다.
data for_fmt;
set translations;
start=original;
label=translation;
fmtname='$CITYF';
*no hlo=o record as we want to preserve nonmatches as is;
run;
proc format cntlin=for_Fmt;
quit;
data want;
set have;
city_fixed=put(city,$CITYF.);
run;
쉽게 주소에 도시를 식별 할 수없는 경우, 다음 TRANWRD 솔루션은 아마 최고입니다 (즉, 주소 필드가없는 쉼표 또는으로 "10532 넬슨 DRIVE 델리"같은 것입니다). if 문을 많이 사용하지 않고 해시 기반 또는 배열 기반 솔루션을 구현할 수 있습니다. 데이터에이 문제가있는 경우 의견을 게시하고 나중에 솔루션에 추가하겠습니다.
출처
2013-12-19 15:03:54
Joe
잘못된 철자를 올바른 철자로 변경한다고 가정합니다. –