提问人:raj 提问时间:11/13/2023 最后编辑:Stu Sztukowskiraj 更新时间:11/15/2023 访问量:94
要为给定方案确定的 SAS 数据步骤
SAS datastep to be determined for given scenario
问:
对于以下给定场景,需要 SAS Datastep:
场景 1:
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
答:
0赞
Richard
11/14/2023
#1
在合并之前,请确保按 CustomerID 对数据集进行排序。合并时,使用自动 in= 标志变量来测试其中一个数据集是否没有匹配值。
标志变量有价值
- 0=false(数据集中没有按组值匹配的记录)
- 1=true(数据集中有一条记录按组值匹配)
示例(使用 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 表示没有订单的客户。
评论
0赞
raj
11/14/2023
请提供方案 2 的示例
0赞
Richard
11/14/2023
什么是 customerOrderCount?
0赞
raj
11/14/2023
嗨,这是三@Richard
0赞
raj
11/15/2023
嗨,上面的代码给了我一个表格中的所有结果,例如客户订单计数客户明智和客户未下任何订单,最好分开,即创建两个SAS数据步骤场景,以便它可以正确地给出一个结果集。
评论
order_new
customer_table
datalines