2017-12-19 24 views
1

目的としたいくつかのフィールドを持っている場合はすべて0を維持し、数値を文字変数に変換:SAS:入力のみ0の

  • :SAS

    でのproc SQLで

    条件を数値ために文字変数を変​​換します入力変数は、xな長さを持っている

  • ONLY 0のいくつかのフィールドがあります
  • 各位置に全て0年代を維持する必要があります

例:私が試した

00000000 
00000000 
00000000 
00000001 
20170617 
20151201 

PROC SQL; 
CREATE TABLE AAA AS 
SELECT input(field,z8.) as field_new 
FROM input_table 
QUIT; 

しかし、私が予想出力は一つの変数では

'00000000' 
'00000000' 
'00000001' 
'20170617' 
'20151201' 

です:テーブルには、次の持つ一つの変数を持ってい

この望ましくない結果を得る:

0 
0 
0 
00000001 
20170617 
20151201 
+0

引用符を取り除く目的ますか?その場合は、TRANSLATE()関数を実行してください。 – Reeza

+0

私はその質問を理解していません。数字0と数字0000の間に違いはありません。それらを異なるものにする必要がある場合は、それらを文字列のままにしておきます。 – Tom

+0

'Z8.'は' FORMAT'であり、 'INFORMAT'ではありません。 – Tom

答えて

0

数値0と数値000の間に違いはありません。先行ゼロで数値を印刷する場合は、変数にZ形式を添付します。

文字変数を使用してデータセットを作成しましょう。

data have ; 
    length str $8 ; 
    input str @@; 
cards; 
0 00000000 1 00000001 20170617 20151201 
; 

文字列を数字に変換するには、INPUT()関数を使用します。 FORMATステートメントを使用して、印刷方法を制御する形式を添付します。

data want ; 
set have; 
num = input(str,F8.); 
format num z8.; 
run; 

またはSQL構文。

proc sql ; 
create table want as 
    select 
    str 
    , input(str,F8.) as num format=z8. 
    from have 
; 
quit; 

結果:

enter image description here

+0

Mrさん、これはうまくいきます、これは私が学びたいことです。ありがとうございました。 –

関連する問題