2012-03-23 6 views
1

数値型の番号付き範囲リストを作成できますが、文字型は作成できません。SAS - 番号付き範囲の文字変数リストの作成?

私のコードは次のようである:

DATA TestDataset; 
    INPUT a1-a3 $; 
    DATALINES; 
    A B C 
    ; 
RUN; 

これは、3つの変数生成 - [A1]、[A2]と[A3]期待されるように。しかし、[a3]は文字ですが、[a1]と[a2]は数字です。これは、次の表のとおり欠損値で私を残します:

a1 a2 a3 
. . C 

次のコードは動作しますが、明らかにそれがうまくスケールしません。

INPUT a1 $ a2 $ a3 $; 

私には何か不足していますか?

答えて

4

私は、あなたが望むものを得るために、長さステートメントにハイフン表記を使うことができると信じています。あなたは本当に長さステートメントを使用する必要があります。それ以外の場合、$ 8にデフォルト設定されます。

`INPUT(A1-A3)($)のための
DATA TestDataset; 
length a1-a3 $20; 
INPUT a1-a3 ; 
DATALINES; 
A B C 
; 
RUN; 
+0

+1ちょうどそれをテストしました - これは動作します。私はあなたのソリューションが私のものよりも好きです:-) –

+0

これは完全に動作します。あなたは正しいです、私は 'LENGTH'宣言を使用すべきでした - 私はまだSASにとっては少し新しいので、この助けをありがとうございます。 – Nossidge

4

私はマクロソリューションを思い付いた:私はマクロなしでこれを行うための方法を見つけることがしたい

%MACRO var_list_char (var_prefix, n); 
    %LOCAL i ; 

    %DO i = 1 %TO &n; 
     &var_prefix&i$ 
    %END; 
%MEND; 


DATA TestDataset; 
    INPUT %var_list_char (a, 3); 

    DATALINES; 
     A B C 
    ; 
RUN; 

- 私は少しのために掘り続けると私はより多くのを見つけた場合、この記事を更新します。一方、上記のアプローチは間違いなく機能します。

UPDATE 1:上記の@ carolinajay65の解決策は、正しい非マクロアプローチです。

UPDATE 2:別の方法があります。この技術をサポートしている言語機能の

DATA TestDataset; 
    INPUT (a1-a3) ($); 
    DATALINES; 
    A B C 
    ; 
RUN; 

より多くのドキュメントは、「どのグループに変数とInformats」というラベルの付いたセクションで、hereを見つけることができます。

+1

+1;' – stevepastelan

+0

私は上記の_CarolinaJay65_の答えを受け入れてきましたが、私はあなたのリンクのために、変数グループブラケット構文の1を与えてくれた、その知っていることは非常にうれしいです。 – Nossidge

+0

私も変数グループの構文に感謝します!知っておいてよかった。 – cmjohns

関連する問題