Proc Import过程后,我无法更改字符列的长度

时间:2015-12-23 09:29:13

标签: excel sas import-from-excel string-length

第一个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位数。 那我该怎么办?

1 个答案:

答案 0 :(得分:1)

在你的代码中,“new”MainTable接受“old”变量,然后读取LENGTH语句并忽略它,因为变量Column2是从“old”MainTable定义的。您必须在SET语句之前定义新长度。

data MainTable;
    format Column2 $5.;
    informat Column2 $5.;
    length Column2 $5;
    set MainTable;
run;