带输入语句的SAS流内上载:字符串截断

带输入语句的SAS流内上载:字符串截断,sas,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 -

我编写此代码段是为了在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列设置固定大小的问题,所以哪种方法是最好的动态调整长度的方法?

谢谢,SAS列的大小是固定的。您需要设置尽可能长的大小(通常通过
LENGTH
语句,或在输入时使用informat),以便告诉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功能的功能(但仍然需要一个最大大小集),但代价是一些速度