SAS newb ie здесь. У меня есть таблица с параметрами образования на каждую дату. Пример показан ниже:
| id | dt_issue | EDUCATION |
|----|------------|-----------|
| 1 | 12.02.2010 | higher |
| 2 | 04.12.2009 | phd |
| 3 | 23.07.2010 | higher |
| 4 | 18.08.2010 | higher |
| 5 | 26.11.2009 | higher |
| 6 | 02.12.2009 | higher |
| 7 | 25.11.2009 | higher |
| 8 | 06.09.2010 | higher |
| 9 | 29.12.2010 | secondary |
| 10 | 04.05.2010 | secondary |
Я хочу рассчитать распределение образования на каждую дату в процентах. Окончательный результат должен выглядеть следующим образом:
| Education | 2007 | 2008 | 2009 | 2010 |
|-----------|--------|--------|--------|--------|
| PHD | 0.0888 | 0.0733 | 0.0851 | 0.0802 |
| Higher | 0.5898 | 0.5532 | 0.5717 | 0.5561 |
| Secondary | 0.2429 | 0.2993 | 0.2636 | 0.2902 |
| Undergrad | 0.0785 | 0.0742 | 0.0796 | 0.0735 |
До сих пор я пытался сделать это:
proc sql;
create table stat_educ as
select year(dt_issue) as year
,education
,count(*)/b.cnt_total as percent
from sample as a
left join
(
select year(dt_issue) as year
,count(*) as cnt_total
from sample
group by 1
) as b
on year(a.dt_issue) = b.year group by 1,2;
quit;
Но это привело только к такой таблице:
| Year | Education | percent |
|------|-----------|---------|
| 2007 | higher | 0.5898 |
| 2007 | Secondary | 0.2429 |
| 2007 | Undegrad | 0.0785 |
| 2007 | PHD | 0.0888 |
| 2008 | higher | 0.5532 |
| 2008 | Secondary | 0.2993 |
| 2008 | Undegrad | 0.0742 |
| 2008 | PHD | 0.0733 |
Два вопроса:
1) Как получить таблицу, которую я хочу?
2) Можно ли использовать код, отличный от того, который я использовал, чтобы сделать его более простым / лаконичным?