我可以创建数字类型的编号范围列表,但不能创建字符类型。
我的代码与此类似:
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 $;
我错过了什么吗?
答案 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;