我有石油运输数据,我需要创建这些数据的贸易流(按国家和地区划分的出发地-目的地)。例如,汇总从沙特阿拉伯、阿拉伯湾到美国、美湾的所有发货量。
我可以使用 proc tabulate 来完成此操作,但我想创建一个变量。我的变量是:LoadCountry、LoadArea、DischargeCountry、DischargeArea。此外,如果区域不同,则 LoadCountry 或 DischargeCountry 可以多次列出,因此不同的流包括所有四个变量。
我应该能够使用 PROC SQL,但我不知道如何对多个变量进行 GROUP BY 来创建聚合和:
proc sql;
title 'LoadCountry-LoadArea-DischargeCountry-DischargeArea Trade flows';
create table data.TradeFlow as
select LoadCountry, LoadArea, DischargeCountry, DischargeArea,
sum(CargoSize) as TotalCargo
from data.allvars1
Group by LoadCountry
Order by LoadCountry, DischargeCountry;
quit;
非常感谢任何帮助。
最佳答案
如果我理解正确的话,你就快完成了...只需将其他三个变量添加到 GROUP BY 子句中即可:
proc sql;
title 'LoadCountry-LoadArea-DischargeCountry-DischargeArea Trade flows';
create table data.TradeFlow as
select LoadCountry, LoadArea, DischargeCountry, DischargeArea,
sum(CargoSize) as TotalCargo
from data.allvars1
Group by LoadCountry, LoadArea, DischargeCountry, DischargeArea
Order by LoadCountry, DischargeCountry;
quit;
关于sql - SAS:如何将双向表转化为实际变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069361/