我在两个单独的步骤中创建了两个数据集,但现在我想知道如何在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;
我自己的两个步骤现在我想知道如何在一个数据步骤中创建它
答案 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;