2016-06-16 3 views
0

Возможно ли использовать PCTSUM в PROC TABULATE для расчета того, какой процент подгруппы (или даже подгруппы) занимает по сравнению с общей группой? Вероятно, лучше всего привести пример.Как использовать PROC TABULATE в SAS для вычисления процента подгруппы по сравнению с основной группой?

Вот пример набора данных:

data sample; 
input make $ model $ owned rented; 
datalines; 
Toyota Corolla 400 224 
Toyota Camry 750 700 
Honda Civic 650 519 
Honda Accord 225 203 
; 

Я знаю следующее PROC Tabulate линия даст мне какой процент автомобилей арендуют сделать

proc tabulate data=sample; 
class make model; 
var owned rented; 
table (make='Vehicle Make' all), owned='Total Owned'*sum rented='Rented'*(sum='Total Rented' pctsum<owned>='Pct Rented'); 
run; 

Как так:

Veh Make TotOwned TotRent PctRent 
Honda  875  722  82.51% 
Toyota 1150  924  80.35% 
All  2025  1646  81.28% 

Но разве можно сломать эту модель, чтобы она сообщила нам не какой процент от аренды Civics (519/650 = 79,8%), но какой процент от всех Hondas снимается Civics (519/875 = 59,3%)?

Как написать PROC Tabulate линию так, что он показывает мне это:

Veh Make VehModel TotOwned TotRent PctRent 
Honda  Accord 225  203  23.20% 
      Civic 650  519  59.31% 
      All  875  722  82.51% 
Toyota Camry 750  700  60.87% 
      Corolla 400  224  19.48% 
      All  1150  924  80.35% 
All    2025  1646  81.28% 

Следует отметить, что 23,2% и 59,31% моделей Honda Всего до 82,51% от итога Honda.

Спасибо за любую помощь, которую вы можете предоставить.

ответ

1

Лучшее, что я могу сделать, это разбить стол на страницы и использовать PAGEPCTSUM. Вы можете вывести это в набор данных, а затем перепечатать его (если вы используете печатный результат), используя другой PROC TABULATE или PROC REPORT или аналогичный.

proc tabulate data=sample; 
    class make model; 
    var owned rented; 
    table (make='Vehicle Make'), model='Vehicle Model', 
     owned='Total Owned'*sum rented='Rented'* 
      (sum='Total Rented' pagepctsum<owned>='Pct Rented'); 
run; 
+0

Спасибо за ваш ответ. Это действительно решает проблему в PROC TABULATE, как я спросил. Это может быть не идеально для более сложного проекта, над которым я работаю, но это именно то, о чем я просил. Возможно, мне придется использовать PROC REPORT, чтобы получить что-то более сложное. – user3930756

Смежные вопросы