Это слишком долго и слишком неловко, чтобы работать как комментарий @Pearly Spencer.Мне кажется, что это можно сделать немного проще.fillin
сделает большую часть работы, и нет необходимости использовать save
, expand
или joinby
.
clear
input rid revenue pid in_stock
46532 2085405 1013 1
58914 3964121 1021 1
end
fillin rid pid
replace in_stock = 0 if _fillin
drop _fillin
bysort rid (revenue) : replace revenue = revenue[1]
list, sepby(rid)
+-----------------------------------+
| rid revenue pid in_stock |
|-----------------------------------|
1. | 46532 2085405 1013 1 |
2. | 46532 2085405 1021 0 |
|-----------------------------------|
3. | 58914 3964121 1021 1 |
4. | 58914 3964121 1013 0 |
+-----------------------------------+