当我第一次运行代码时,我输出的文件夹中有一行的新数据集。然后我使用变量的新值并再次运行它,我的目的是将新记录作为我第一次创建的数据集中的第二行追加。
假设我有一个名为name
的变量,用于多次更改其值,我还有一个名为tab1
的表,用于每次存储新值{{ 1}}有新的价值。例如:在代码中:
name
第一次,如果PROC SQL;
Create table tab1 AS
select a.name, a. id
from tab2 a ;
quit;
变量为“Mark”,则name
存储值Mark和2,然后我使用PROC EXPORT输出一行包含名称的新数据集:标记和标识:1。例如:
tab1
然后我读了这个table1.csv,然后再用它来联合tab1来获取一个新表PROC EXPORT data = tab1
outfile = "&somepath\table1.csv"
replace;
run;
,然后将它输出到文件夹中,例如:
tab3
问题是每次运行代码时,输出都会更新。例如,PROC IMPORT OUT=table1
datafile = "&somepath\table1.csv"
replace;
run;
PROC SQL;
create table tab3 as
select *
from table1
union
select *
from tab1;
quit;
PROC EXPORT data=tab3
outfile = "&somepath\table1.csv
replace;
run;
变量设置为“Tom”,然后name
将变为“Tom和2,table1也是如此。我只是不能将新的变量附加到旧的。我应该如何修改我的这样做的代码?
答案 0 :(得分:0)
您不需要使用PROC EXPORT来写分隔记录。只需使用正常的数据步骤。这样,您可以控制FILE语句中的选项并包含MOD选项,以便SAS将附加到现有文件。
data _null_;
set new_dataset;
file 'existing.csv' dsd MOD ;
put (_all_) (+0) ;
run;
如果您希望CSV文件有标题行,您可以在第一时间使用PROC EXPORT,或者自己编写标题。
proc transpose data=table1(obs=0) out=names ;
var _all_;
run;
data _null_;
file 'newfile.csv' dsd ;
set names end=eof;
put _name_ @;
if eof then put;
run;