Вы классифицируете строку на основе первого слова авиакомпании.
Proc TRANSPOSE
с оператором ID
- это один из распространенных способов изменить данные таким образом, чтобы категориальное значение стало столбцом. Второй способ - обойти классификацию и использовать шаг данных для непосредственного создания новой формы данных.
Вот пример второго способа - создать новые столбцы group1 и group2 и установить значение на основе критериев авиакомпании.
data airlines_group_amounts;
set airlines;
if scan (airlines,1) in ('Air', 'Jet') then
group1 = amount;
else
group2 = amount;
run;
Подвести итог по клиенту
proc sql;
create table want as
select
client_name
, sum(group1) as group1
, sum(group2) as group2
, sum(amount) as total
from airlines_group_amounts
group by client_name
;
Вы можете избежать двух шагов и выполнить всю обработку в одном запросе, или вы можете выполнить суммирование с помощью Proc MEANS
Вот один способ запроса.
proc sql;
create table want as
select
client_name
, sum(case when scan (airlines,1) in ('Air', 'Jet') then amount else 0 end) as group1
, sum(case when scan (airlines,1) in ('Air', 'Jet') then 0 else amount end) as group2
, sum(amount) as total
from airlines
group by client_name
;