SAS:从一个数据集中检索小计并将其附加到另一个数据集中的变量
SAS: Retrieve a subtotal from one dataset and append it to the variables in another
我创建了一个名为 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
我想找出 ES_Amount / SA_Amount 其中 SA_Amount = "Final Sale Amount" 并将该列添加到 work.removals。换句话说,"what percentage of the final sale amount of the whole file is included in each removal bucket?"
这个练习在 excel 中超级简单,但在 SAS 中却让我感到沮丧。
如有任何帮助,我们将不胜感激。
如果我没看错,您只需要将 Sale_Analysis 中的一个值复制到 Removals 的每一行中。
有很多好的方法可以做到这一点,但最简单的方法是:
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
语句,它们就会保留在每一行中。 if _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中合并数据是你必须作为自己的主题来学习的东西。我会在网上搜索有关该主题的好论文(使用 "Combining data" 或 "merging data" 和 SAS 作为搜索词)。它比 excel 更难,因为您没有对其他单元格的直接引用 - 但它也更强大。
我创建了一个名为 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
我想找出 ES_Amount / SA_Amount 其中 SA_Amount = "Final Sale Amount" 并将该列添加到 work.removals。换句话说,"what percentage of the final sale amount of the whole file is included in each removal bucket?"
这个练习在 excel 中超级简单,但在 SAS 中却让我感到沮丧。
如有任何帮助,我们将不胜感激。
如果我没看错,您只需要将 Sale_Analysis 中的一个值复制到 Removals 的每一行中。
有很多好的方法可以做到这一点,但最简单的方法是:
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
语句,它们就会保留在每一行中。 if _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中合并数据是你必须作为自己的主题来学习的东西。我会在网上搜索有关该主题的好论文(使用 "Combining data" 或 "merging data" 和 SAS 作为搜索词)。它比 excel 更难,因为您没有对其他单元格的直接引用 - 但它也更强大。