如何将新记录附加到 SAS 中的现有 CSV 文件
How to append the new records to the existing CSV file in SAS
当我第一次 运行 我的代码时,我正在输出文件夹中一行的新数据集。然后我为变量使用新值并再次 运行 它,我的目的是将新记录附加为我第一次创建的数据集中的第二行。
假设我有一个名为name
的变量,用于多次更改其值,我还有一个名为tab1
的table,用于存储每次 name
都有新值时的新值。例如:代码中:
PROC SQL;
Create table tab1 AS
select a.name, a. id
from tab2 a ;
quit;
第一次,如果name
变量是"Mark",那么tab1
存储值Mark和2,然后我使用PROC EXPORT输出一行新数据集,其中包括name:Mark和id:1。例如:
PROC EXPORT data = tab1
outfile = "&somepath\table1.csv"
replace;
run;
然后我读了这个table1.csv,然后用它再次union tab1得到一个新的tabletab3
,然后输出到文件夹里,例如:
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;
问题是每次我 运行 代码时,输出都会更新。例如,name
变量设置为 "Tom",那么 tab1
将变为“汤姆和 2,table1 也是如此。我只是无法将新的附加到旧的那些。我应该如何修改我的代码才能做到这一点?
您不需要使用 PROC EXPORT 来写入分隔记录。只需使用正常的数据步骤。这样您就可以控制 FILE 语句上的选项并包含 MOD 选项,以便 SAS 将附加到现有文件。
data _null_;
set new_dataset;
file 'existing.csv' dsd MOD ;
put (_all_) (+0) ;
run;
如果您希望 CSV 文件有一个 header 行,您可以在第一次使用 PROC EXPORT 或自己编写 header。
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;
当我第一次 运行 我的代码时,我正在输出文件夹中一行的新数据集。然后我为变量使用新值并再次 运行 它,我的目的是将新记录附加为我第一次创建的数据集中的第二行。
假设我有一个名为name
的变量,用于多次更改其值,我还有一个名为tab1
的table,用于存储每次 name
都有新值时的新值。例如:代码中:
PROC SQL;
Create table tab1 AS
select a.name, a. id
from tab2 a ;
quit;
第一次,如果name
变量是"Mark",那么tab1
存储值Mark和2,然后我使用PROC EXPORT输出一行新数据集,其中包括name:Mark和id:1。例如:
PROC EXPORT data = tab1
outfile = "&somepath\table1.csv"
replace;
run;
然后我读了这个table1.csv,然后用它再次union tab1得到一个新的tabletab3
,然后输出到文件夹里,例如:
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;
问题是每次我 运行 代码时,输出都会更新。例如,name
变量设置为 "Tom",那么 tab1
将变为“汤姆和 2,table1 也是如此。我只是无法将新的附加到旧的那些。我应该如何修改我的代码才能做到这一点?
您不需要使用 PROC EXPORT 来写入分隔记录。只需使用正常的数据步骤。这样您就可以控制 FILE 语句上的选项并包含 MOD 选项,以便 SAS 将附加到现有文件。
data _null_;
set new_dataset;
file 'existing.csv' dsd MOD ;
put (_all_) (+0) ;
run;
如果您希望 CSV 文件有一个 header 行,您可以在第一次使用 PROC EXPORT 或自己编写 header。
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;