对于长度超过8个字符的字符串,是否需要使用“:”?

时间:2014-05-27 03:37:07

标签: sas

在以下程序中,所有数据都已正确读取

data test ;
infile datalines ;
input make 10$ mpg @@ ; /* should I use make : 10$ . . */
datalines ;
Ford 20 Honda 29 Oldsmobile 20 Cadillac 17
Toyota 24 Chevrolet 17
;
run ;
proc print ;
run ;

上面的代码运行正常,但我的老师说我必须使用冒号:,正确的答案是input make : 10$ mpg @@ ;

我不明白为什么。据我所知:如果我们在记录行的开头有尾随空格是有用的,否则我们为什么要在这里使用呢?

1 个答案:

答案 0 :(得分:3)

冒号告诉SAS使用以下信息。没有结肠,SAS会忽略那部分(它没有做任何事情)。如果您不指定,则默认情况下SAS使用$8.的信息(和结果长度)。

总是更好地指定信息,因为存储在默认的8长度字符变量中的2个长度的字符将浪费存储空间和处理时间,但它不会改变该值(假设您知道注意尾随空格)。

您还可以提前指定信息:

data test;
infile datalines;
informat make $10.;
input
make $ mpg @@;
datalines;
Ford 20 Honda 29 Oldsmobile 20 Cadillac 17
Toyota 24 Chevrolet 17
;;;;
run;
proc print data=test;
run ;

我发现通常更容易阅读,尽管在流中使用:$10.也是可以接受的。