在以下程序中,所有数据都已正确读取
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 @@ ;
我不明白为什么。据我所知:
如果我们在记录行的开头有尾随空格是有用的,否则我们为什么要在这里使用呢?
答案 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.
也是可以接受的。