Изменить данные для всех значений pid - PullRequest
2 голосов
/ 15 июня 2019

У меня есть переменные ниже:

rid     revenue     pid     in_stock
46532   2085405     1013    1
58914   3964121     1021    1

Я бы хотел изменить их следующим образом:

rid     revenue     pid     in_stock
46532   2085405     1013    1
46532   2085405     1021    0
58914   3964121     1013    0
58914   3964121     1021    1

Как я могу сделать это в Stata?

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Это слишком долго и слишком неловко, чтобы работать как комментарий @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 |
     +-----------------------------------+
1 голос
/ 15 июня 2019

Нет необходимости reshape данные:

clear
input rid revenue pid in_stock
46532 2085405 1013 1
58914 3964121 1021 1
end

save original, replace

local N = _N
expand 2
replace rid = 999 if _n > `N'

fillin rid pid
replace in_stock = 0 if missing(in_stock)

joinby rid using original, update

list

     +---------------------------------------------+
     |   rid   revenue    pid   in_stock   _fillin |
     |---------------------------------------------|
  1. | 46532   2085405   1013          1         0 |
  2. | 46532   2085405   1021          0         1 |
  3. | 58914   3964121   1013          0         1 |
  4. | 58914   3964121   1021          1         0 |
     +---------------------------------------------+
...