过程附加复制(SAS)

过程附加复制(SAS),sas,Sas,我正在处理一个SAS问题,需要附加数据。数据运行成功,但每次运行程序时都会创建重复数据 请检查我的代码和表格的屏幕截图: 问题:创建一个新文件“Total_Sales”,将问题3中首先创建的文件添加到数据文件“Hyundai”中 /*Problem 3*/: data avik1.var1; length uniqueid $50 Manufacturer $ 50 Model $20 Sales_in_thousands 8 _4_year_resale_value 8 Price_in_th

我正在处理一个SAS问题,需要附加数据。数据运行成功,但每次运行程序时都会创建重复数据

请检查我的代码和表格的屏幕截图:

问题:创建一个新文件“Total_Sales”,将问题3中首先创建的文件添加到数据文件“Hyundai”中

/*Problem 3*/:
data avik1.var1;
length uniqueid $50 Manufacturer $ 50 Model $20 Sales_in_thousands 8 _4_year_resale_value 8 Price_in_thousands 8;
retain uniqueid Manufacturer Model Latest_Launch Sales_in_thousands _4_year_resale_value Price_in_thousands;
set avik1.conc(drop= Vehicle_type Engine_size Horsepower Wheelbase Width Length Curb_weight Fuel_capacity Fuel_efficiency );
informat Latest_Launch date9.;
format Latest_Launch ddmmyy10.;
run;
proc print data = avik1.var1;
run;

/* Data To be Appended */
data avik1.hyundai;
length uniqueid $ 50 Manufacturer $ 50 Model $20 Sales_in_thousands 8 _4_year_resale_value 8;
informat Latest_Launch date7. ;
format Latest_Launch ddmmyy10.;
input Manufacturer $ Model $ Sales_in_thousands _4_year_resale_value Latest_Launch;
uniqueid=(Model||Manufacturer);
cards;
Hyundai Tuscon 16.919 16.36 2Feb12
Hyundai i45 39.384 19.875 3Jun11
Hyundai Verna 14.114 18.225 4Jan12
Hyundai Terracan 8.558 29.775 10Mar11
;
run;
Proc Print data = avik1.hyundai;
run;
现在,我使用以下代码来附加:

data avik1.total_sales;
set avik1.var1 avik1.hyundai;
proc append base=avik1.var1 new=avik1.hyundai force;
run;
proc print data= avik1.total_sales;
run;
该程序运行,但得到我的副本,你可以在图像中检查

我是SAS的新手,非常感谢您对这个问题的回应和解决方案。也请告诉我为什么会发生这种情况


谢谢

你运行过两次吗?我猜,但这可能是你看到重复的原因。我会尽力解释的

在这里的附加代码中,您将通过组合var1和现代创建新的数据集total_sales:

data avik1.total_sales;
set avik1.var1 avik1.hyundai;
在下面的代码中,您不是在创建新的数据集,而是通过添加来自现代的记录来扩展var1

proc append base=avik1.var1 new=avik1.hyundai force;
run;
如果您运行此proc append,然后再次运行第一个数据步骤,您将拥有所有现代记录的副本,因为您正在使用扩展的var1并重新添加现代记录


所以关键是,为了回答最初的问题,proc-append过程完全没有必要。您仅通过数据步骤就实现了这一点。

是的,我运行了两次,然后我决定只运行一次,然后创建一个新的数据集,并重新调用似乎有效的数据集。如果我有一个用户不知道它并且不小心再次运行代码,这会很麻烦,它会再次把一切都搞糟。正如我所说的,你根本不需要PROC APPEND过程-它会导致重复。您的数据步骤已足够。