Установка значения переменной в каждой группе на основе двоичного выбора - PullRequest
1 голос
/ 31 января 2020

Рассмотрим следующий пример данных, где изначально у меня есть только group и choice переменные:

obs    group  choice  need   coding

1      1      0       car     train
2      1      1       car     car
3      1      0       car     bus
--------------------------------------
4      2      0       bus     train
5      2      0       bus     car
6      2      1       bus     bus
--------------------------------------
7      3      1       train   train
8      3      0       train   car
9      3      0       train   bus
--------------------------------------
10     5      0       car     train
11     5      1       car     car
12     5      0       car     bus
--------------------------------------

Если кодирование на choice такое же, как указано выше, как я могу сгенерировать переменную need ?

Я прочитал связанный вопрос и некоторые статьи на форуме, но не смог адаптировать его к моему делу.

1 Ответ

1 голос
/ 31 января 2020

У меня работает следующее:

clear
input group choice
1 0 
1 1
1 0
2 0
2 0 
2 1
3 1
3 0 
3 0
5 0
5 1
5 0
end

bysort group: generate coding = _n
label define coding 1 "train" 2 "car" 3 "bus"
label values coding coding

bysort group: generate tag = coding if choice == 1
egen need = max(tag), by(group)
label values need coding

drop tag

Результаты:

list, sepby(group)

     +---------------------------------+
     | group   choice   coding    need |
     |---------------------------------|
  1. |     1        0    train     car |
  2. |     1        1      car     car |
  3. |     1        0      bus     car |
     |---------------------------------|
  4. |     2        0    train     bus |
  5. |     2        0      car     bus |
  6. |     2        1      bus     bus |
     |---------------------------------|
  7. |     3        1    train   train |
  8. |     3        0      car   train |
  9. |     3        0      bus   train |
     |---------------------------------|
 10. |     5        0    train     car |
 11. |     5        1      car     car |
 12. |     5        0      bus     car |
     +---------------------------------+
...