SAS proc append - 变量格式错误

时间:2016-04-19 11:51:17

标签: sas

我在表b中有ID列的格式为INTEGER。     我使用proc append,但当我检查表database.aw_1234我有双或浮动格式的ID,我该如何解决?

data a (KEEP = ID ACC_NO PERIOD_DTE);
infile "/root/dirs/files." dlm=";";

ID=_n_;
format ID 8.;
input ACC_NO_VAR PERIOD_DTE $10.;

leading_zeros = 16 - length(ACC_NO_VAR);
cat = repeat('0', leading_zeros);
ACC_NO = catt(cat, ACC_NO_VAR); 
run;

DATA b(KEEP = ID ACC_NO PERIOD_DTE);
      RETAIN ID  ACC_NO PERIOD_DTE;
      SET a;
 RUN;

proc delete data = database.aw_1234;

proc append BASE=database.aw_1234. FORCE;

1 个答案:

答案 0 :(得分:2)

SAS只有2种类型,字符串和双打。格式只是SAS关于如何向用户显示变量的说明。所以你的号码总是翻倍。

如果您要在RDBMS中创建一个表,您可能会在日志中看到一条说明符号的注释" SAS格式未翻译"。这意味着RDBMS并不真正知道格式是什么,所以SAS只是将你的double写成double。

要解决此问题,请使用TYPE整数在RDBMS系统中创建表。然后使用SAS从表中删除记录并附加到该表中。不要删除并重新创建表格。

将您的代码更改为以下内容:

proc sql noprint;
delete from database.aw_1234;
quit;

proc append base=database.aw_1234 data=b force;
run;