基本上我需要导入多个excel文件并简单地堆叠它们。我写了一个宏来做到这一点,但在代码结束时,它出现在堆栈部分,出现了多条错误消息: 错误:变量XX已被定义为字符和数字。 我试图修改宏中的格式,但它不起作用。 (我试过"格式F1 = DDMMYY10,F2 = 12.8,F7 = $ 12") 我还需要保留F1-F7。但是log表示"此版本的SAS系统中的过程步骤不支持DROP和KEEP语句。"因此,这些陈述将被忽略。
请您查看我的代码并告诉我应该如何修改它? 这是代码:
%LET TOTAL=4;
%LET PATH=H:\test\;
%LET INFILE1=a (1).xlsx;
%LET INFILE2=a (2).xlsx;
%LET INFILE3=a (3).xlsx;
%LET INFILE4=a (4).xlsx;
%MACRO EXCELREAD(I,INFILE);
PROC IMPORT OUT=TEST_&i
DATAFILE="&PATH.&INFILE"
DBMS=EXCEL REPLACE;
GETNAMES=NO;
MIXED=YES;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
/*KEEP F1 F2 F3 F4 F5 F6;
FORMAT F1=DDMMYY10, F2=12.8, F7=$12;*/
RUN;
%MEND;
%EXCELREAD(1,&INFILE1);
%EXCELREAD(2,&INFILE2);
%EXCELREAD(3,&INFILE3);
%EXCELREAD(4,&INFILE4);
data pilot_bond;
set test_1
test_2(firstobs=2)
test_3(firstobs=2)
test_4(firstobs=2)
run;
以下是错误消息:
3712 data pilot_bond;
3713 set test_1
3714 test_2(firstobs=2)
3715 test_3(firstobs=2)
3716 test_4(firstobs=2)
ERROR: Variable F1 has been defined as both character and numeric.
ERROR: Variable F2 has been defined as both character and numeric.
ERROR: Variable F6 has been defined as both character and numeric.
ERROR: Variable F7 has been defined as both character and numeric.
ERROR: Variable F6 has been defined as both character and numeric.
ERROR: Variable F6 has been defined as both character and numeric.
3730 run;
任何帮助将不胜感激! 进一步简化代码的方法也非常受欢迎。
答案 0 :(得分:0)
我不确定你的工作表看起来如何,但通过查看错误,似乎列F1是excel中的字符值,如果你打开excel并且你在FI数据单元格中看到绿色标记然后这是一个字符值,你需要
1.首先使用“导入”向导导出 .xlsx 文件中的数据
2.然后运行上面的程序
这可以解决你的问题。