使用输入语句上传SAS instream:字符串截断

时间:2017-07-25 14:05:40

标签: sas

我编写了此代码段以在SAS中加载数据集。

data eser7.ateneo;
infile datalines missover;
input FAC $  AA0506  AA0607  AA0708; 
datalines;
Architettura    200 200 200
Economia    680 680 680
Giurisprudenza  -   350 400
Ingegneria  470 470 600
Lettere -   -   150
SMFN    -   -   180
ScPolitiche -   300 300
; 
run;

proc print data = eser7.ateneo;
run;

在结果查看器中,我注意到第一个变量FAC已经截断了字符串。我无法解决为FAC栏设置固定大小的问题,那么哪种方法可以适应动态长度呢? 感谢

1 个答案:

答案 0 :(得分:1)

SAS列具有固定大小。您需要设置尽可能长的大小(通常通过LENGTH语句,或使用输入信息),以告知SAS为列留出多少空间。

data eser7.ateneo;
infile datalines missover;
length FAC $20;
input FAC $  AA0506  AA0607  AA0708; 
datalines;
Architettura    200 200 200
Economia    680 680 680
Giurisprudenza  -   350 400
Ingegneria  470 470 600
Lettere -   -   150
SMFN    -   -   180
ScPolitiche -   300 300
; 
run;

proc print data = eser7.ateneo;
run;

如果您无法确定正确的最大尺寸,可以使用最大可能尺寸($ 32767)读取,然后使用压缩(options compress=YES;options compress=CHAR;)或后输入分析数据集并将长度修改为更短的大小。但你不能有每行长度;压缩确实为您提供了接近VARCHAR功能的东西(但仍然需要设置最大大小),代价是速度。