sas - 在proc sql中按组包含不存在的值 - SAS
问题描述
我对 SAS 编程有疑问。
例如 sashelp.cars,我想按原产地对它们进行分组并总计它们的建议零售价。
问题是,如果我想在按组列表中添加“澳大利亚”,但在 sashelp.cars 中,没有来自澳大利亚的品牌/型号,该怎么办?
我所做的是使用proc sql:
proc sql;
create table sample as
select *, sum(MSRP) as total_srp
from sashelp.cars
group by origin;
quit;
但在输出数据集样本中,我只看到“亚洲”“欧洲”和“美国”,因为它们是 sashelp.cars 中唯一可用的。
有没有更直接的方法将澳大利亚包含在输出数据集样本中,总 srp 为 0,即使它在 by 组之前不存在?
我在想的是有一个包含完整来源列表的元表:“亚洲”、“欧洲”、“美国”和“澳大利亚”,然后查找 sashelp.cars 以便它具有“虚拟”值在执行 proc sql 之前。
提前致谢
解决方案
我会先执行 SQL 步骤,然后将结果与您希望在输出中看到的所有可能来源的元文件合并。
proc sql;
create table meta (origin char(9));
insert into meta values('Asia');
insert into meta values('Australia');
insert into meta values('Europe');
insert into meta values('USA');
create table sample as
select *
from meta as m full outer join (
select *, sum(MSRP) as total_srp
from sashelp.cars
group by origin) as s
on s.origin = m.origin;
quit;
您可能必须修改select语句(避免使用通配符 - 此代码将重新排序列,确保您从元文件中放置原点- 或使用COALESCE函数将它们从两个文件中放在一起,等等)。
您还应该考虑什么样的连接是合适的。
推荐阅读
- java - 如何将值模型类对象作为字符串传递给 ArrayList?
- javascript - 获取所有以@字符开头的单词
- php - 至少一个嵌套值大于零的 Elasticsearch 过滤器
- c# - 即使正确安装了软件 VS 2019 C#,所有控件(例如按钮、文本框)在其他 PC 上的显示方式也不是我想要的
- assembly - x86_64 程序集,系统调用写入的输出是否存储在某处?
- python-3.x - 尽管使用了默认参数,但 Get() 返回 None
- reactjs - 使用 TypeScript 输入带有强制变量的 GraphQL 查询
- mysql - MySQL:如何为这个后查询过滤器设置“HAVING”条件?
- javascript - JavaScript Maps——使用“相同”键创建两个值
- html - 即使没有互联网,链接也会显示图像