2016-09-08 3 views
2

私はソートnonalphabet文字(ダッシュ)

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

を次のようにデータセットをソートするためにしようとしていますし、私が出力される

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」の後にするのダッシュを動かし(「{」ASCII照合シーケンス内の文字「Z」の後の文字です):その後、SORTSEQにすることを使用

+0

良い答え、私は 'proc trantab'のための使用をしたことはありませんでしたが、それが何をしているのか知ることは良いことです。私は私の答えで正しい考えを持っていましたが、SASにはソリューションが組み込まれていることは分かりませんでした。 – Longfish

0

私はここにあなたを助けるオプションはないと思います。 ' - 'はASCIIの文字の前に来て、sortseq=オプションで利用可能な他の照合シーケンスでは変更されません。

アルファベット以外のすべての文字を、ASCIIの文字の後ろにあるもの、たとえば '〜'に変更することが目標の1つです。あなたの実際のデータがどれほど実用的か実用的かわかりません。

関連する問題