Как перекодировать пропущенные значения в диапазоне в Stata - PullRequest
0 голосов
/ 28 апреля 2020

Я задавал подобный вопрос ранее. Я пытаюсь заполнить пропущенные значения так, чтобы наблюдения 0-458 были e 0, 445-832 равны 1, а 832-850 равны 0.

Следующий код позволил мне заменить отсутствующие значения в наблюдениях 1 -160 с 1, с остальными наблюдениями, установленными на 0.

replace myvar = cond(_n <= 160, 1, 0) if missing(myvar)

Как я могу интерпретировать эту команду для какой моей текущей цели?

1 Ответ

1 голос
/ 28 апреля 2020

Наблюдения нет 0. Я предполагаю, что вы имели в виду наблюдение 1. Ваши правила неоднозначны, иначе вы дадите два правила для 445-458 и два правила для 832.

Я дам код для минимальных данных пример.

clear
set obs 6
gen myvar = .

Предположим, вы хотите, чтобы myvar в наблюдениях 1/2 было 0, 3/4 - 1, 5/6 - 0.

Метод 1

replace myvar = inrange(_n, 3, 4) if missing(myvar)

Метод 2

replace myvar = cond(_n <= 2, 0, cond(_n <= 4, 1, 0)) 

Метод 3

replace myvar = 0 if missing(myvar) in 1/2
replace myvar = 1 if missing(myvar) in 3/4 
replace myvar = 0 if missing(myvar) in 5/6 

В целом, однако, замена с точки зрения чисел наблюдения не является наилучшей техникой. Это полностью зависит от порядка сортировки. Кроме того, если существуют критерии с точки зрения других переменных, они предпочтительнее, поскольку они имеют больше смысла в записях воспроизводимых исследований, для вас самих в будущем и для коллег, рецензентов и других.

...