Stata 合并两个变量

Stata 合并两个变量,stata,Stata,我有以下数据: 我想把上面面板中的数据转换成下面面板中的数据 对于每个原始组,我想添加一行,其中包含目标值-1,以及varnew中的var值 我试图找出是否有一个命令可以添加一行,以便我可以执行以下操作: bysort origin: addrow 然而,似乎没有这样的事情。使用您的玩具示例数据: clear input destination origin var varnew 0 111 124 . 111 111 671 168 0 222 623 . 222 222 768 865

我有以下数据:

我想把上面面板中的数据转换成下面面板中的数据

对于每个原始组,我想添加一行,其中包含目标值
-1
,以及
varnew
中的var值

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

bysort origin: addrow

然而,似乎没有这样的事情。

使用您的玩具示例数据:

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 |
     +----------------------------+

使用您的玩具示例数据:

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 |
     +----------------------------+

非常感谢。我不知道
扩展2
谢谢!我不知道
扩展2