SAS - 创建编号范围字符变量列表?

时间:2012-03-23 15:42:44

标签: variables 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 $;

我错过了什么吗?

2 个答案:

答案 0 :(得分: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;

我希望我能找到一种没有宏的方法 - 我会继续挖掘一下,如果我发现更多,我会更新这篇文章。与此同时,上述方法肯定会奏效。

更新1 :@ carolinajay65上面的解决方案是正确的非宏观方法。

更新2 :我找到了另一种方式。

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

有关支持此技术的语言功能的更多文档,请参阅标记为"如何分组变量和格式"

的部分here

答案 1 :(得分:4)

我相信你可以在长度语句中使用连字符表示法来获得你想要的东西。你真的应该使用一个长度语句,不管它是什么。另外它默认为8美元。

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