2012-03-23 51 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美元。

DATA TestDataset; 
length a1-a3 $20; 
INPUT a1-a3 ; 
DATALINES; 
A B C 
; 
RUN; 
+0

+1只是測試它 - 這工作。我喜歡你的解決方案比我的更好:-) – 2012-03-23 16:18:49

+0

這完美的作品。你是對的,我應該使用'LENGTH'聲明 - 我對SAS還是有些新鮮的,所以非常感謝你的幫助。 – Nossidge 2012-04-01 14:06:21

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; 

更多的文檔可以發現here,在標有「如何組變量和Informats」一節。

+1

+1'INPUT(A1-A3)($);' – stevepastelan 2012-03-28 14:56:17

+0

我已經接受_CarolinaJay65_的回答上面,但我已經給你+1的鏈接和變量組括號語法,很高興知道。 – Nossidge 2012-04-01 14:10:06

+0

感謝我的變量組語法!很高興知道。 – cmjohns 2012-04-03 15:31:51