Как группировать наблюдения вместе по типу в SAS - PullRequest
0 голосов
/ 05 октября 2018

У меня есть набор данных SAS, который выглядит примерно так:

data test;
    input id type $ quantity cost;
    datalines;
    1 one 2 3
    2 one 3 4.5
    3 two 1 5
    4 three 3 12
    5 two 4 20
    6 three 7 28
    7 one 4 6
    8 two 3 15
    ;
run;

Моя цель - объединить количества и затраты всех наблюдений на основе типа.Конечный результат должен выглядеть следующим образом.

data test2;
    input type $ combined_quantity combined_cost;
    datalines;
    one 9 13.5
    two 8 40
    three 10 40
    ;
run;

По существу, если такие строки, как

id type quantity cost

4 three 3 12

6 three 7 28

существует, результат должен быть

type combined_quantity combined_cost

three 10 40

как сумма 2 строк на основе одного типа

Как мне это сделать с помощью SAS?Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

также можно сделать с помощью proc sql, как показано ниже.

proc sql;
create table want as 
select type, 
   sum(quantity) as combined_quantity,
   sum(cost) as combined_cost
from test
group by 1;

или в шаге данных как

  data want(keep = type combined_quantity combined_cost) ;
  set test1;
   by type;
 if first.type then combined_quantity=quantity;
else combined_quantity+quantity;
if first.type then combined_cost=cost;
else combined_cost+cost;
if last.type then output;
run;
0 голосов
/ 05 октября 2018
proc means data=test nway;
  class type;
  var quantity cost;
output out=test2 (drop=_:) sum=combined_quantity combined_cost;
run;
...