仅使用非缺失标识符合并数据集

时间:2019-02-28 21:58:22

标签: stata

我有两个类似于下表的数据集:

  +------------+
  | id |  var1 |
  |----+-------|
  |  1 | 42082 |
  |  2 | 42275 |
  |  2 | 42474 |
  |  3 | 42141 |
  |  3 | 42502 |
  |  4 | 42203 |
  +------------+

  +------------+
  | id |  var2 |
  |----+-------|
  |  1 | 41783 |
  |  2 | 42120 |
  |  4 | 42218 |
  |  4 | 41525 |
  +------------+

我想创建一个像下面这样的数据集:

  +--------------------+
  | id |  var1 |  var2 |
  |----+-------+-------|
  |  1 | 42082 | 41783 |
  |  2 | 42275 | 42120 |
  |  2 | 42474 | 42120 |
  |  4 | 42203 | 42218 |
  |  4 | 42203 | 41525 |
  +--------------------+

但是,当我使用merge命令时:

merge id using table2

我得到以下信息:

  +--------------------+
  | id |  var1 |  var2 |
  |----+-------+-------|
  |  1 | 42082 | 41783 |
  |  2 | 42275 | 42120 |
  |  2 | 42474 | 42120 |
  |  3 | 42141 |     . |
  |  3 | 42502 |     . |
  |  4 | 42203 | 42218 |
  |  4 | 42203 | 41525 |
  +--------------------+

我也尝试使用append命令:

append using table2

但是在这种情况下,我得到了:

  +--------------------+
  | id |  var1 |  var2 |
  |----+-------+-------|
  |  1 | 42082 |     . |
  |  2 | 42275 |     . |
  |  2 | 42474 |     . |
  |  3 | 42141 |     . |
  |  3 | 42502 |     . |
  |  4 | 42203 |     . |
  |  1 |     . | 41783 |
  |  2 |     . | 42120 |
  |  4 |     . | 42218 |
  |  4 |     . | 41525 |
  +--------------------+

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您需要使用joinby命令:

clear
input id var2
1 41783
2 42120
4 42218
4 41525
end

tempfile dataset2
save `dataset2'

clear
input id var1
1 42082
2 42275
2 42474
3 42141
3 42502
4 42203
end

joinby id using `dataset2'

list, sepby(id)

     +--------------------+
     | id    var1    var2 |
     |--------------------|
  1. |  1   42082   41783 |
     |--------------------|
  2. |  2   42275   42120 |
  3. |  2   42474   42120 |
     |--------------------|
  4. |  4   42203   42218 |
  5. |  4   42203   41525 |
     +--------------------+