假设我创建的数据集包含3个Observations和2个变量,即name和id。 如果在3次观察中只有1次观察需要25个字符。
DATASET practice;
INPUT Name $25. Id;
DATALINES;
a 20 *1st observation;
abcdefghijklmnopqrstuvwxy 10 *2nd observation;
abc 15; *3rd observation
run;
现在我的问题是,sas会为所有3个观察分配25个字符,还是会像varchar一样。
答案 0 :(得分:2)
使用默认选项,特别是COMPRESS=NO
,SAS将为字符分配25个字节,并用空格填充未使用的字节('20'x)。这不仅对存储很重要,对于字符比较也很重要;虽然大多数比较忽略了尾随空格,但有时候这不是真的,并且需要明确地修剪尾随空格。
但是,如果您使用OPTION COMPRESS=YES
或OPTION COMPRESS=CHAR
,它会压缩写出的数据集中的字段,使其更像varchar
(它不会占用太多浪费的额外空间)。这些空间在技术上仍然存在,可能需要在程序中考虑,但它们不需要完整字节的存储。