2012-02-15 9 views

答えて

2

data test; 
    monthtext="January"; 
    month=month(input("01"||substr(monthtext,1,3)||"2000",date9.)); 
run; 
4

あなたがあなた自身のフォーマットを行うことができます。

options fmtsearch=(work); 

proc format; 
invalue MonNum 
    JANUARY = 1 
    FEBRUARY = 2 
    ; 
run; 

data Month; 
length month $10; 
input Month $; 
month=upcase(month); 
monthnum=input(month,monnum.); 
datalines; 
    January 
    February 
    ; 
Run; 

Proc report data=work.month nowd; 
column month monthnum; 
run; 
0

それはあなたのコードでこれを使用しようとしている方法によって異なります。コードの複数のセクションでこのマッピングを繰り返す必要がある場合は、データステップやその他の手順で使用できるPROC FORMATを使用してカスタムフォーマットを作成することをお勧めします。 1つのデータ・ステップでこのマッピングを実行するだけの場合は、SELECT/WHENまたはIF/ELSE IFロ​​ジックを使用して同じ処理を行うことができます。 SASでこれを達成する他の多くの方法がありますが、私はこれらの2つの方法が最も単純だと思います。

1

入力機能を使用して文字タイプを数値タイプに変換する方法。しかし、私はカスタムフォーマットの作成が良いと同意するでしょう。

data test;  
    input monthchar $15.; 
    datalines; 
    December 
    January 
    March 
    ; 
    run; 

data test; 
    set test; 
    monthnum=month(input(cats(1,substr(monthchar,1,3),2000),date9.)); 
    run; 
あなたはフォーマットせずにこれを行うことができます
関連する問題