主题:将具有循环计数的数据集更改为追加语句
我有一个宏,它将循环并创建一个后面有计数器的新数据集。
这样的代码:
PROC IMPORT OUT = WORK.out&i DATAFILE =“&dir /&name”
/ excelout /
DBMS = csv替换;定界符='09'x; getnames = no;跑;数据测试&i(drop =%do k = 1%to&cnt; && col&k ..%end;
);
长度站$ 10电压$ 10年8个月$ 20变压器$ 10日$ 20日期时间MW_Imp MW_Exp MVAR_Imp MVAR_Exp MVA 功率因数8;格式时间hhmm。出发&i。 end = last;
如果我通过PROC IMPORT有4个外部文件,当前脚本将生成大约4个数据集。
我想要的是消除多个数据集的创建,而只是将它们追加到主文件中。有办法吗?
答案 0 :(得分:0)
循环内的append语句应足以实现此目的。 SAS将复制第一个数据集作为基础,因为它不存在。
proc append base=test data=test&i force; run;
答案 1 :(得分:0)
添加可能同样简单,但是如果您不想创建很多数据集,可以使用数据步骤使用通配符一次读取多个文件。这样就无需遍历文件,但确实需要文件具有相同的结构,并且不与其他类似命名的文件一起存储在文件夹中。 firstobs选项在我的测试中引起了som问题,但是正如您在导入中指定了getnames=no
一样,我想您不需要它。
下面的代码段在c:\ test中输入了所有csv文件。
data test;
infile "c:\test\*.csv" dsd delimiter='09'x;
input varA $ varB $;
run;