Как создать строку со значениями предыдущего ряда SAS - PullRequest
0 голосов
/ 17 января 2019

У меня есть таблица со списком номеров счетов, n-месячный период. Мне нужно сделать строку ведра, как показано ниже. Пожалуйста, помогите (база SAS)

ACC Bucket Month bucketstring
123      0        jan18     0
123       1        feb18   10
123        2       mar18  210
345       0        feb18    0
345       1        mar18  10

1 Ответ

0 голосов
/ 17 января 2019

Оператор retain используется для поддержания значения неустановленной переменной на протяжении итераций неявного цикла, который происходит во время шага DATA.

Этот пример будет работать с ACC группами, имеющими до 15 месяцев (0..15). ACC с большим количеством месяцев увидят сообщение put в журнале.

data want;
  set have;
  by ACC;

  length bucketstring $20; * bucketstring might have to be made longer;
  retain buckstring;

  if length (bucketstring) = 20 and not first.ACC then
    put 'ERROR: bucketstring has to be longer for the case of ' ACC= month=;

  if first.ACC
    then bucketstring = cats(month);
    else bucketstring = cats(bucketstring,month);
run;

Функция cats объединяет элементы. Элементы автоматически удаляются из начальных и конечных пробелов, а также при необходимости автоматически преобразуют числовой элемент в символьное значение.

...