2016-12-07 27 views
1

簡単にするには、Anna、Bobby、Casper、Christineの4つの名前を持つデータセットがあります。列名は単に「名前」です。SAS:カテゴリ変数の順序を変更する方法

この順序で並べ替える:Bobby、Anna、Casper、Christine。ここでは、 'asc/desc'で 'proc sort'を使うことはできません。ランダムに注文されているので、注文を手動で入力する必要があります。

私は何とか次のproc sort文を含めることはできますか?

Proc Sort 
    data = dataset; order by Names; 
run; 
+0

私は考えられません。しかし、たとえば、Bobbyの場合は1、Annaの場合は2、Casperの場合は3、Christineの場合は4を別の列に追加してください。新しい列で並べ替えます。 –

+0

@ D.O。 Thx ^。私は自分自身について考えましたが、より洗練された方法が必要であると私は考えました。可能でない場合、SASは大きな時間を浪費しています:) –

+0

混乱は、あなたがカテゴリ変数タイプを持っていると思うことです - あなたは文字変数タイプを持っています。 – Joe

答えて

1

@Joeスケーラブルであり、CNTLINを使用してデータセットからフォーマットを読み込むことができるため、最良の方法です。私はちょうどproc sqlを使用して、私は別の解決策を投稿すると思った。 SASのバージョンを使用すると、order byステートメントとcaseステートメントを追加することで、オンザフライでカスタムオーダーを作成することができます。効果的に、これはソートに使用される余分な列をメモリに作成しますが、列は出力されません。

ソートするアイテムの数が比較的少ない場合に便利な方法です。

proc sql; 
create table want 
as select * 
from have 
order by case names 
      when 'Bobby' then 1 
      when 'Anna' then 2 
      when 'Casper' then 3 
      when 'Christine' then 4 
     end; 
quit; 
+0

SQLでこれを行っていても、case文よりもフォーマットに入れる方がいいでしょう。つまり、「入力順(名前、ORDERINFORMATI。)」など)。 – Joe

3

カテゴリ変数をSASに保存する方法は、文字を表示する形式で数値として表示されます。これは他のプログラミング言語(例えば、 R、それらを扱います(factor R)。例えばので

ここ
data have; 
    length names $15; 
    input names $; 
    datalines; 
Bobby 
Anna 
Casper 
Christine 
;;;; 
run; 

proc format; 
    value yourformatf 
    1 = 'Bobby' 
    2 = 'Anna' 
    3 = 'Casper' 
    4 = 'Christine' 
    other = ' ' 
    ; 
    invalue yourinformati 
    'Bobby' = 1 
    'Anna' = 2 
    'Casper' = 3 
    'Christine' = 4 
    other = . 
    ; 

quit; 

data want; 
    set have; 
    names_cat = input(names,yourinformati.); 
    format names_cat yourformatf.; 
run; 

私は(番号、名前に番号への名前)の形式及び/前後へ行くinformatを作成します。 names_catでソートできるようになり、必要に応じてソートされます。これは、cntlinデータセットを使用してプログラムで(フォーマットを作成して)行うことができます。詳細については、こちらの検索エンジンまたは検索エンジンを参照してください。

rとよく似ていると、数値変数はfactor変数の値に似ていて、その形式はレベルのラベルに似ています。 (メタデータに格納されているレベル自体には直接的な類推はありませんが、多くのSAS procsには、Rで使用されるレベルと同じ方法でフォーマットに格納された数値を使用するオプションがあります)。

+0

最初の方法は完璧に働いた、ありがとう! –

関連する問題