全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2041 19
2023-01-07
悬赏 78 个论坛币 已解决
有个小问题麻烦各位SAS高手一下。 楼主好几年没用SAS了,所以一些基础步骤忘了。

描述一下问题。 下边有三个数据表格。 这个问题主要是合并最后的总结结果到一个表格里,这个合成的表格只需每个表格的名字,销售的订单数量和销售的总额。

比如:

表格名字          订单数量    订单数额
第一个表格        15                2000
第二个表格        25                 3000
第三个表格        10                 1500
整合后的第三个表格  5              800

(注意只有这一个整合后的第三个表格才考虑每个订单的销售日期要在前两个表格里都一样的数据才被统计进去。其他表格即使有一个订单拥有两个不同的销售日期和数额,也要全部算进去。)

我可以用 proc sql 的程序把每个表格里的订单数量和订单数额算出来,但是用 union all 整合后表格名字,订单数量,还有订单数额那一行就是空白的。怎么把变量名字加上去?

这个用data steps 怎么做需要先用 proc sort 把每个表格里按订单号码排序吗? 然后再merge 这样可以定义新变量:表格名字,订单数量,和订单数额?

请把proc sql 和 data steps 的方法 详细的 SAS Codes 再下方回帖里告诉我,我实验一下,谢谢啦。 金币不是问题。

-------------------------

第一个表格有15行销售记录,每行有订单号码和销售日期和数额。

第二个表格有25行销售记录,每行有订单号码和销售日期和数额。

第三个表格有10行销售记录,每行有前两个表格里共同出现的订单号码,但是同一个订单可以有不同的销售日期和数额。

第三个表格整合后有 5行销售记录,因为每行不但要有前两个表格里共同出现的订单号码,还要确保每个订单的销售日期在前两个表格里也是一样的,所以从10行减少到5行销售记录。

比如说一个订单A同时出现在前两个表格里, 但是第一个表格显示销售日期是 2022/10/12,数额是195,但是第二个表格显示销售日期是 2022/10/15,数额是212。 到底哪个表格的数据是对的我不知道,这个得问提供数据的人,我只是把他们整合起来。

这个问题主要是数据部门没整合号导致的,让我来处理。


最佳答案

HXAI102230 查看完整内容

1.out_loc 是自定义的库名,可以根据libref命名规则换成其他符合条件的字符; 2.printto后未带库名,默认的输出路径是指上面libname 里定义的那个存放的结果输出路径。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-1-7 09:23:01
reduce_fat 发表于 2023-1-10 11:08
我明白了,但是为啥libname 开始的时候要用 out_loc 来定义结果输出路径呢? 为什么不是别的呢? 这个是S ...
1.out_loc 是自定义的库名,可以根据libref命名规则换成其他符合条件的字符;
2.printto后未带库名,默认的输出路径是指上面libname 里定义的那个存放的结果输出路径。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-7 12:01:09
数据表格可以提供一下吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-7 12:24:13
HXAI102230 发表于 2023-1-7 12:01
数据表格可以提供一下吗?
没有啊, 这个你看描述可以构造一个虚拟的,我主要看SAS 代码,这样根据实际情况修改后用到我的实例中。 就是四组数据,不需要实际数字。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-7 14:25:19
proc sql;
create table 第三个表格 as
select count(distinct 订单号码) as 订单数量,sum(订单数额) as 总额
from
(select * from 表格1,表格2 where 表格1.订单号码=表格2.订单号码);

create table 整合后的第三个表格 as
select count(distinct 订单号码) as 订单数量,sum(订单数额) as 总额
from
(select * from 表格1,表格2 where 表格1.订单号码=表格2.订单号码 & 表格1.销售日期=表格2.销售日期);
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-8 02:01:22
HXAI102230 发表于 2023-1-7 14:25
proc sql;
create table 第三个表格 as
select count(distinct 订单号码) as 订单数量,sum(订单数额)  ...
你能否帮我把这四组数据的总结合在一个表格里就像下面的模板一样。这是最终要用的。 谢谢。 这是四个proc sql 的合成表格,我用union all 把他们合起来但是不能重新命名合成后的变量名字。 所以你可以用data steps 帮我合成表格后命名,或者你能再proc sql 结果合成后再建立一个行下方红色的新变量名字也可以。 谢谢。

表格名字          订单数量    订单数额

第一个表格        15                2000
第二个表格        25                 3000
第三个表格        10                 1500
整合后的第三个表格  5              800
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群