Это должно работать
egen afd_lr2 = mean(cond(ost == 0, afd_lire2w, cond(ost == 1, afd_lireo, .))), by(ost)
Вот тест:
clear
input float(group y1 y2)
1 42 .
1 42 .
2 . 999
2 . 999
end
egen mean = mean(cond(group == 1, y1, cond(group == 2, y2, .))), by(group)
tabdisp group, c(mean)
----------------------
group | mean
----------+-----------
1 | 42
2 | 999
----------------------
Ключ в том, что функция mean()
egen
подает выражение, которое может быть сложнее, чем одно имя переменной. Тем не менее, это сложнее, чем я бы вообще посоветовал, так как
generate work = afd_lire2w if ost == 0
replace work = afd_lireo if ost == 1
egen mean = mean(work), by(ost)
легче понять и он должен прийти в голову программисту в любом случае.