Считать, если в varlist выполнено несколько условий - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь посчитать значения многих строковых переменных (hh_1_age hh_2_age hh_3_age и т. Д.) На основе нескольких условий и отправить вывод в новую переменную schoolage.

Самое близкое, что я получил, написано ниже ... но я все еще получаю сообщения об ошибках. Я надеюсь, что я на правильном пути, и это просто небольшая синтаксическая ошибка:

generate schoolage = .

foreach var of varlist hh_* {
    count if `v'=="6 - 10 years of age" | `v'=="11 - 14 years of age"
}

1 Ответ

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

Это требует много догадок по сравнению с небольшим количеством предоставленной информации. Пожалуйста, обратите внимание на предложения здесь для хороших вопросов Stata, которые включают в себя воспроизводимый пример на основе реальных (измических) данных.

У вас могут быть данные об отдельных членах домашнего хозяйства, и вы хотите подсчитать, сколько из них достигло школьного возраста, то есть в возрасте от 6 до 14 лет.

gen schoolage = 0 

foreach v of var hh_*_age { 
    replace schoolage = schoolage + inlist(`v', "6 - 10 years of age", "11 - 14 years of age") 
}

было бы одним из решений этого.

Обратите внимание, что это предполагает, что рассматриваемые переменные действительно являются строковыми, как вы сообщаете. Далее, проверки на равенство полностью буквальны: все символы должны совпадать по очереди.

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

...