要为给定方案确定的 SAS 数据步骤

SAS datastep to be determined for given scenario

提问人:raj 提问时间:11/13/2023 最后编辑:Stu Sztukowskiraj 更新时间:11/15/2023 访问量:94

问:

对于以下给定场景,需要 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 
SAS公司

评论

0赞 Stu Sztukowski 11/13/2023
您的第一个数据步骤无效。请发布示例数据,最好是格式。order_newcustomer_tabledatalines
0赞 raj 11/13/2023
CustomerID CustomerName 联系人姓名 国家/地区 1 Alfred Maria 德国 2 Ana Trujillo Ana 墨西哥 3 Antonio Antonio 墨西哥 OrderID CustomerID EmployeeID 1 3 2 2 2 1 3 2 3
0赞 Stu Sztukowski 11/13/2023
请编辑您的问题并添加此内容,而不是将其放在评论中。这里无法解析。
0赞 raj 11/13/2023
嗨,已经编辑过了。

答:

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 表示没有订单的客户。

enter image description here

评论

0赞 raj 11/14/2023
请提供方案 2 的示例
0赞 Richard 11/14/2023
什么是 customerOrderCount?
0赞 raj 11/14/2023
嗨,这是三@Richard
0赞 raj 11/15/2023
嗨,上面的代码给了我一个表格中的所有结果,例如客户订单计数客户明智和客户未下任何订单,最好分开,即创建两个SAS数据步骤场景,以便它可以正确地给出一个结果集。