2016-09-08 3 views
2

내가알파벳 문자 후 nonalphabet 문자 (대시) 정렬

data X; 
input name$; 
    cards; 
ab 
abb 
b-- 
ba 
; run; 

을 다음과 I 출력이

proc sort data=X ; by name; run; 

을 사용할 때 데이터 집합을 정렬하는 데 노력하고 있어요 :

ab 
abb 
b-- 
ba 

그러나 내가 알기로는 출력을

ab 
abb 
ba 
b-- 

내가 사용할 수있는 proc sort의 옵션은 무엇입니까 (SORTSEQ 옵션)?

+0

더 나은 검색 가능성을 위해 제목을 편집했습니다. 누군가가 SORTSEQ를 검색하는 것을 알고 있다면 그들은 이미 대답을 가장 잘 알고있을 것입니다. 어쨌든 내 대답에는 SORTSEQ가 포함되어 있습니다. 나는 그런 경우에 대비하여 SORTSEQ에 대한 언급을 던졌다. – Joe

답변

2

내가 아는 한, 대시가 알파벳 문자 뒤에 오도록 정렬 순서를 변경하는 것이 유일한 방법은 PROC TRANTAB을 사용하여 해당 문자 뒤에 대시가 나타나는 사용자 정의 변환 테이블을 정의하는 것입니다.

proc trantab table=ascii; 
    list one; 
    save table=nodash; 
    replace '-' '{'; 
    save table=nodash; 
    list one; 
    run; 
quit; 

data X; 
    input name$; 
cards; 
ab 
abb 
b-- 
ba 
; 
run; 
proc sort data=x sortseq='nodash'; 
by name; 
run; 
:

예를 들어, 여기에 내가 문자 'Z'이후로 대시를 이동 ('{'아스키 정렬 순서에서 문자 'Z'후 문자) : 다음 SORTSEQ의 것을 사용

+0

좋은 대답, 나는'proc trantab'에 대한 사용법을 본 적이 없지만 그것이 무엇인지 아는 것이 좋다. 내 대답에 맞는 아이디어가 있었지만 SAS에 솔루션이 내장되어 있다는 것을 알지 못했습니다! – Longfish

0

나는 여기 당신을 도울 수있는 옵션이 없다고 생각합니다. '-'는 ASCII 문자로 시작하며 sortseq= 옵션에서 사용할 수있는 다른 조합 시퀀스는 변경되지 않습니다.

목표를 달성하는 한 가지 방법은 알파벳이 아닌 모든 문자를 ASCII 문자 (예 : '~')로 변경하는 것입니다. 귀하의 실제 데이터가 얼마나 실현 가능성이 있는지 또는 실용적인지 모르겠습니다.

관련 문제