以下给定场景需要 SAS Datastep:
场景一:
SAS datastep 用于识别未下订单的客户列表。
场景2:
SAS datastep 用于获取客户表中每个客户下的订单总数。
下面是我尝试过的场景 1 的 SAS 数据步骤,但还有其他方法吗:
`data dummy;
merge order_newcustomer_table;
by CustomerID;
if OrderID=missing;
run;`
对于场景2,你能建议一些更好的方法吗?
表格如下:
CustomerID CustomerName ContactName Country
1 Alfred Maria Germany
2 Ana Trujillo Ana Mexico
3 Antonio Antonio Mexico
OrderID CustomerID EmployeeID
1 3 2
2 2 1
3 2 3
合并前确保数据集按 CustomerID 排序。合并时使用自动 in= 标志变量来测试其中一个数据集是否没有匹配值。
标志变量具有值
示例(使用 DOW 循环技术重做):
data customers;
do customerId = 1 to 11;
output;
end;
run;
data orders;
call streaminit(20231114);
do orderId = 1 to 100;
customerId = rand('integer', 10);
amount = rand('integer', 100);
output;
end;
run;
proc sort data=customers; by customerId;
proc sort data=orders; by customerId;
run;
data want;
length customerId 8;
orderCount = 0;
totalAmt = 0;
do until (last.customerId);
merge customers orders(in=orderFlag);
by customerid;
orderCount + orderFlag;
totalAmt + amount;
end;
keep customerId orderCount totalAmt;
run;
您将得到以下数据集的输出。不需要多个数据集。 orderCount = 0 是没有订单的客户。