合并两个变量

时间:2018-10-20 00:18:49

标签: stata

我有以下数据:

enter image description here

我想将上方面板中的数据转换为下方面板中的数据。

对于每个原始组,我想添加一行,其中目标值为-1,而变量值则为varnew

我试图查找是否有一条添加一行的命令,以便可以执行以下操作:

bysort origin: addrow

但是,似乎没有任何东西。

1 个答案:

答案 0 :(得分:2)

使用玩具示例数据:

clear

input destination origin var varnew
0 111 124 .
111 111 671 168
0 222 623 .
222 222 768 865
end

list, abbreviate(15)

     +-------------------------------------+
     | destination   origin   var   varnew |
     |-------------------------------------|
  1. |           0      111   124        . |
  2. |         111      111   671      168 |
  3. |           0      222   623        . |
  4. |         222      222   768      865 |
     +-------------------------------------+

expand 2 if varnew != .
sort origin destination 
list, abbreviate(15)

     +-------------------------------------+
     | destination   origin   var   varnew |
     |-------------------------------------|
  1. |           0      111   124        . |
  2. |         111      111   671      168 |
  3. |         111      111   671      168 |
  4. |           0      222   623        . |
  5. |         222      222   768      865 |
     |-------------------------------------|
  6. |         222      222   768      865 |
     +-------------------------------------+

以下对我有用:

bysort origin: replace destination = -1 if destination[_n] == destination[_n+1] & !missing(varnew)
bysort origin: replace var = varnew if var[_n] == var[_n+1] & !missing(varnew)

list destination origin var, abbreviate(15)

     +----------------------------+
     | destination   origin   var |
     |----------------------------|
  1. |           0      111   124 |
  2. |          -1      111   168 |
  3. |         111      111   671 |
  4. |           0      222   623 |
  5. |          -1      222   865 |
     |----------------------------|
  6. |         222      222   768 |
     +----------------------------+