Consider the following data example where initially I have group
and choice
variables only:
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
--------------------------------------
If coding on choice
is as above, how can I generate the variable need
?
I read a related question and some forum articles but have failed to adapt it to my case.
The following works for me:
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
Results:
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 |
+---------------------------------+