第一个proc import
进程从Excel文件中读取“字符”列。 Excel中的数据只有2个字符,因此SAS将列长度设置为2。
proc import datafile = "excelfie" out=MainTable DBMS = excel REPLACE;
SHEET = "Sheet1"; GETNAMES=NO; MIXED=YES; USEDATE=YES; SCANTIME=YES; RANGE="A1:C26";
run;
然后我使用proc append
将另一个SAS表(具有相同的列名)插入主SAS表中,但是我收到错误,因为SAS在主表中创建了2个字符长度的列,并且新的字符数据是5位数。
Proc Append Base=MainTable Data=Table1; Run;
我尝试在proc attend
进程之前将列的长度更改为
data MainTable;
set MainTable;
format Column2 $5.;
informat Column2 $5.;
length Column2 $5;
run;
Proc Append Base=MainTable Data=Table1; Run;
但是我仍然得到同样的错误,因为Column格式现在是5美元。但是长度仍然是2。
我在Force
进程中使用Proc append
选项强制合并进程以获取不同格式的数据。
Proc Append Base=MainTable Data=Table1 FORCE NOWARN; Run;
现在我没有收到错误,但它将新数据从5位切换到2位数。 那我该怎么办?
答案 0 :(得分:1)
在你的代码中,“new”MainTable接受“old”变量,然后读取LENGTH语句并忽略它,因为变量Column2是从“old”MainTable定义的。您必须在SET语句之前定义新长度。
data MainTable;
format Column2 $5.;
informat Column2 $5.;
length Column2 $5;
set MainTable;
run;