如何在SAS中的单个数据步骤中创建2个新数据集

时间:2018-03-11 21:34:38

标签: sas

我在两个单独的步骤中创建了两个数据集,但现在我想知道如何在SAS的一个步骤中创建两个新数据集

data purchase_price_jjohns2;
merge hw06.inventory hw06.purchase;
by Model;
if Quantity NE '';
TotalCost = Quantity*Price;
format TotalCost dollar7.2;
run;


data not_purchase_jjohns2;
merge hw06.inventory hw06.purchase;
by Model;
if Quantity='';
run;

我自己的两个步骤现在我想知道如何在一个数据步骤中创建它

1 个答案:

答案 0 :(得分:0)

单个数据步骤可以根据需要创建任意数量的输出数据集。重要的是要记住创建所有输出数据集,并在运行时修复输出列。您可以使用数据集选项(keep=...)(drop=...)指定每个输出数据集中pdv的哪些变量。在单个数据步骤中,不能创建一个名称基于某些变量值的输出数据集 - 如果需要这样的拆分,可以预处理数据。 有些技巧涉及动态哈希,但这是一个高级主题

您当前使用的if语句是子设置 ifs。这意味着仅当数据步骤流到达步骤底部时才会发生输出(隐式输出)。您需要一个明确的OUTPUT语句,以确保当前行进入所需的输出数据集。

因此,您可以拥有类似于

的数据步骤
data want1 want2(drop=total);
  merge one two;
  by key;

  if missing(quantity) then
    OUTPUT want2;
  else do;
    total = quantity * price;
    OUTPUT want1;
  end;
run;