Вычисление сложного дохода в SAS - PullRequest
0 голосов
/ 19 декабря 2009

У меня есть набор данных о дате (ежемесячно), человеке и возврате (ежемесячно). Мне нужно рассчитать сложную месячную доходность набора данных с апреля года по март года t + 1 для каждого человека. Например,

Годовой доход Лицо A = Апрель Год 1 * Май Год 1 * ...... * Март Год 2.

Могу ли я узнать, как я могу это сделать в SAS? Нужен ли массив?

1 Ответ

0 голосов
/ 30 декабря 2009

Вы имеете в виду, что ваш набор данных выглядит как

Дата, Персона, Возврат

01 апреля 2009 г., д, 1,1

и т.д.

и т.д.

/* Then you can do */

data ur_input_data_view / view = ur_input_data_view;

  /* assuming your dataset is stored in ur_input_data */

  set ur_input_data;

  /* obtain the year and month from the date variable */

  year = year(date);

  mth = year(date);

run;

/* you can skip the sort if your data is already sorted by person then date */

proc sort data = ur_input_data;

  by person date;

run; 

data output_data;

  set ur_input_data_view ;

  by person date;

  /* reset annual return to null if looking at a new person or month is april */

  if first.person or mth = 4 then do;

    annual_return = return;

  end;

  retain annual_return;

  annual_return = annual_return * return;

  /* this will output nothing for the persons that don't have a record at march */

  if mth = 3 then output;

run;
...