Дублирование полей в SAS --- Использовать оператор RETAIN? - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь сделать следующее.

Я хочу это:

ID Антибиотик1 Антибиотик2
1 1.
1 .
1 2 1 , 2 1 2 3. 2 , 3 1.
3 2

Чтобы превратиться в это:

ID Антибиотик1 Антибиотик2
1 1 2
1 1 2
1 1 2 1 1 2 2 3 1 2 3 1 2 3 1 3 1 1
3 2 2

Есть идеи?

СПАСИБО !!

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Я думаю, вы ищете что-то подобное.Обратите внимание, что ниже я инициализировал значения антибиотиков по умолчанию равными 55, чтобы они выделялись, но вы, вероятно, захотите изменить это значение на 2 для примера, приведенного выше.

data antibiotics;
  input id anti1 anti2;
datalines;
1 1 .
1 . .
1 . 2 
1 . . 
2 . 1 
2 3 . 
2 . . 
3 1 .
3 . 2
;
run;

data antibiotics2;
  set antibiotics;
  retain prev_anti1 prev_anti2 55;

    if anti1 = . then do;
      anti1 = prev_anti1;
    end;
    if anti2 = . then do;
      anti2 = prev_anti2;
    end;

  prev_anti1 = anti1;
  prev_anti2 = anti2;

  drop prev:;
run;

proc print data=antibiotics2;
run;

Вывод:

Obs    id    anti1    anti2

1      1      1        55
2      1      1        55
3      1      1         2
4      1      1         2
5      2      1         1
6      2      3         1
7      2      3         1
8      3      1         1
9      3      1         2
0 голосов
/ 13 декабря 2011

Похоже, что вы просто случайно вменяете пропущенные значения на основе факторов, которые вы наблюдали в наборе данных.Морщина может заключаться в том, чтобы решить, хотите ли вы, чтобы эти вменения зависели от частоты, с которой они встречаются в наборе данных.Например, если у вас есть 80% 1 в не пропущенных данных, вы хотите сгенерировать 1 с вероятностью 0,8 в пропущенных данных?

Возможно, вы захотите прочитать о PROC SURVEYSELECT, который хорош для моделированиячерпает из выборки наблюдаемых данных.Может потребоваться сначала перенести набор данных во фрейм данных фиксированной ширины, используя PROC TRANSPOSE, чтобы он был длинным, а не широким.Тогда у вас будет только один столбец с пропущенными данными.

...