Sql SAS:从一个数据集中检索小计,并将其附加到另一个数据集中的变量
我创建了一个名为work.saleanalysis的摘要数据集,其中包含三个变量和三个观察值:Sql SAS:从一个数据集中检索小计,并将其附加到另一个数据集中的变量,sql,sas,Sql,Sas,我创建了一个名为work.saleanalysis的摘要数据集,其中包含三个变量和三个观察值: Sale_Analysis SA_Count SA_Amount Beginning Sale Amount 11796 15861502.76 Redeemed 2026 2742861.09 Final Sale Amount 9770
Sale_Analysis SA_Count SA_Amount
Beginning Sale Amount 11796 15861502.76
Redeemed 2026 2742861.09
Final Sale Amount 9770 13118641.67
我创建了第二个名为work.removals的摘要数据集
Reason ES_Count ES_Amount
Size 1312 316639
Value 3101 2083563
Type 1211 2418995
Other 9 15869
Old 96 154821
Bad 245 513487
我想在SA_Amount=“Final Sale Amount”中找到ES_Amount/SA_Amount,并将该列添加到work.removals。换句话说,“每个删除桶中包含整个文件的最终销售金额的百分比是多少?”
这个练习在excel中非常简单,但在SAS中却让我感到沮丧
任何帮助都将不胜感激。如果我没看错的话,您只需要将销售分析中的一个值复制到每行删除内容中即可 有很多好方法可以做到这一点,但最简单的方法是:
data removals_2;
set removals;
if _n_=1 then set saleanalysis(where=(sale_analysis='Final Sale Amount') keep=sale_analysis sa_amount);
drop sale_analysis;
run;
您要做的是执行第二个set
语句,该语句从第二个数据集中获取变量,并将它们放在输出数据集中。因为它们只被引入一次,所以只要您没有by
语句,它们就会被保留在每一行中如果_n_=1
说只在第一行执行此操作(之后,您将无法找到另一行,数据步骤将终止)
使用sashelp.class的一个简单示例:
data class;
set sashelp.class;
if _n_=1 then set sashelp.class(where=(name_barbara='Barbara') keep=name rename=name=name_barbara);
run;
一般来说,在SAS中合并数据是您必须学习的主题。我会在网上搜索关于这个主题的好文章(使用“合并数据”或“合并数据”和SAS作为搜索词)。它比excel更难,因为您没有对其他单元格的直接引用,但它的功能也要强大得多。!谢谢,这太完美了!!