Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SAS:从一个数据集中检索小计,并将其附加到另一个数据集中的变量_Sql_Sas - Fatal编程技术网

Sql SAS:从一个数据集中检索小计,并将其附加到另一个数据集中的变量

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

我创建了一个名为work.saleanalysis的摘要数据集,其中包含三个变量和三个观察值:

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更难,因为您没有对其他单元格的直接引用,但它的功能也要强大得多。

!谢谢,这太完美了!!