【问题标题】:Proc Append Duplication (SAS)Proc 追加复制 (SAS)
【发布时间】:2018-10-05 19:02:03
【问题描述】:

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

请查看我的代码和表格截图:

问题:通过将数据文件“Hyundai”附加到问题 3 中首次创建的文件中来创建一个新文件“Total_Sales”。

/*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;

程序运行,但让我重复,您可以在图像中检查 Screenshot in Yellow Mark Shows Duplicates

我是 SAS 新手,非常感谢您对此问题的回复和解决方案。另外请告诉我为什么会这样。

谢谢!

【问题讨论】:

    标签: sas


    【解决方案1】:

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

    在此处的附加代码中,您将通过结合 var1 和 hyundai 创建新的数据集 total_sales:

    data avik1.total_sales;
    set avik1.var1 avik1.hyundai;
    

    在下面的代码中,您没有创建新数据集,而是通过添加来自现代的记录来扩展 var1。

    proc append base=avik1.var1 new=avik1.hyundai force;
    run;
    

    如果您运行此 proc append 然后再次运行第一个数据步骤,您将拥有所有现代记录的副本,因为您正在使用 EXPANDED var1 并重新添加现代记录。

    所以关键是,要回答原始问题,proc append 过程是完全没有必要的。您仅通过数据步骤就实现了。

    【讨论】:

    • 是的,我运行了两次,然后我想只运行一次并创建一个新数据集,然后回忆一下似乎可行的相同数据集。万一我有一个用户不知道它并且意外地再次运行代码并且它会再次搞砸一切,这会很麻烦。
    • 正如我所说,您根本不需要 PROC APPEND 过程 - 它会导致重复。您的 DATA 步就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多