在另一个数据中添加基于ID的列

时间:2016-07-01 17:09:43

标签: stata

data1是1990年的数据,它看起来像

Panelkey   Region    income
 1           9           30
 2           1           20
 4           2           40

data2是2000年的数据,看起来像是

Panelkey   Region    income
  3          2           40
  2          1           30
  1          1           20

我想在1990年添加一个每个人居住的地方。

Panelkey    Region    income   Region1990
  3          2          40        .
  2          1          30        1
  1          1          20        9

如何在Stata上执行此操作?

1 个答案:

答案 0 :(得分:1)

以下代码将通过选择收入较高的地区来处理同一年居住在多个地区的小组。如果收入与一个地区所花费的年份的比例成比例,这将是有意义的。使用最高地区的价值可以任意打破相同的收入关系。其他类型的聚合可能有意义(请查看-collapse-命令)。

请注意,我通过在每年的最后一次观察中插入第二行来调整数据:

Mat segmentImage() {
    int num_iterations = 4;
    int prior = 2;
    bool double_step = false;
    int num_levels = 10;
    int num_histogram_bins = 5;

    int width, height;

    width = h1.size().width;
    height = h1.size().height;

    seeds = createSuperpixelSLIC(h1);

    Mat mask;

    seeds->iterate(num_iterations);

    Mat labels;
    seeds->getLabels(labels);
    for (int i = 0; i < labels.rows; i++) {
        for (int j = 0; j < labels.cols; j++) {
            if (labels.at<int>(i, j) == 0)
                cout << i << " " << j << " " << labels.at<int>(i, j) << endl;

        }
    }
    ofstream myfile;
    myfile.open("label.txt");
    myfile << labels;
    myfile.close();

    seeds->getLabelContourMask(mask, false);
    h1.setTo(Scalar(0, 0, 255), mask);

    imshow("result", h1);
    imwrite("result.png", h1);
    return labels;
}