2017-07-25 47 views
0

我写了这段代码片段来加载SAS中的数据集。SAS instream上传输入语句:字符串截断

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

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功能的东西(但仍需要设置最大大小)。

+0

清楚有用的解释。谢谢 –