SAS에서 단어의 마지막 부분을 가져 오기 위해 하위 문자열 함수를 사용하는 방법은 무엇입니까?

user1626092

편집하고 싶은 이메일 목록이 있습니다. 예를 들어 @ institution.dk와 같은 이메일이 많이 있습니다. 이 모든 유형의 이메일을 삭제하고 싶습니다. 왼쪽에서 문자의 길이가 같지 않으므로 오른쪽에서 왼쪽으로 이메일을 식별해야합니다.

나는 시도했다 :

data B;
set a;
where var not equals 'institution.dk';
run;

data B;
set a;
where var equals not 'institution.dk';
run;

data B;
set a;
where substr(var,-1,14^= 'institution.dk';
run;

data b;
set a;
var2=scan(trim(var),-1,14) ;
run;
data c;
set b;
if var2 ^= institution.dk;   
run;

그러나 아무것도 작동하지 않습니다. 이러한 관찰을 제거 할 수 있도록 SAS가 문자열의 마지막 부분 (오른쪽에서 왼쪽으로 카운트)을 식별하도록하려면 어떻게해야합니까?

Apkl

한 가지 방법은 인덱스입니다.

If index(var,"@institution.dk") then delete;

또 다른 방법은 정규 표현식을 사용하는 것입니다.

If prxmatch("#\@institution.dk#",var) then delete;

또 다른 유용한 방법은 통화 스캔을 사용하는 것입니다.

Call scan(var,-1,pos,len,"@");
Var2=substr(var,pos);
If var2="institution.dk" then delete;

라인 1은 @ 뒤의 마지막 단어에 대한 pos 및 len 변수를 생성하고, 라인 2는 해당 정보를 포함하는 변수 var2를 생성하고, 라인 3은 제외하려는 문자열과 일치하는지 테스트하고 true로 반환되면 삭제합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관