在 proc sql 中按组包含不存在的值 - SAS
Include non existent value to by group in proc sql - SAS
我对 SAS 编程有疑问。
例如 sashelp.cars,我想按产地对它们进行分组并合计它们的厂商建议零售价。
问题是,如果我想在by group列表中添加'Australia',但是在sashelp.cars中没有来自澳大利亚的make/model怎么办?
我做的是使用proc sql:
proc sql;
create table sample as
select *, sum(MSRP) as total_srp
from sashelp.cars
group by origin;
quit;
但是在输出数据集示例中,我只看到 'Asia' 'Europe' 和 'USA' 因为它们是 sashelp.cars.
中唯一可用的
是否有更直接的方法将澳大利亚包含在 0 total_srp 的输出数据集样本中,即使它在按组之前不存在?
我在想的是有一个包含完整来源列表的元 table:'Asia' 'Europe'、“美国”和“澳大利亚”,然后查找sashelp.cars 这样它在执行 proc sql.
之前会有一个 'dummy' 值
提前致谢
我会先执行 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 语句(避免通配符 - 此代码将重新排序列,确保您输入 origin meta 文件中的 - 或者使用 COALESCE 函数将两个文件中的它们放在一起,等等)。
你也想想join什么样的才合适
我对 SAS 编程有疑问。
例如 sashelp.cars,我想按产地对它们进行分组并合计它们的厂商建议零售价。
问题是,如果我想在by group列表中添加'Australia',但是在sashelp.cars中没有来自澳大利亚的make/model怎么办?
我做的是使用proc sql:
proc sql;
create table sample as
select *, sum(MSRP) as total_srp
from sashelp.cars
group by origin;
quit;
但是在输出数据集示例中,我只看到 'Asia' 'Europe' 和 'USA' 因为它们是 sashelp.cars.
中唯一可用的是否有更直接的方法将澳大利亚包含在 0 total_srp 的输出数据集样本中,即使它在按组之前不存在?
我在想的是有一个包含完整来源列表的元 table:'Asia' 'Europe'、“美国”和“澳大利亚”,然后查找sashelp.cars 这样它在执行 proc sql.
之前会有一个 'dummy' 值提前致谢
我会先执行 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 语句(避免通配符 - 此代码将重新排序列,确保您输入 origin meta 文件中的 - 或者使用 COALESCE 函数将两个文件中的它们放在一起,等等)。
你也想想join什么样的才合适