从两个数据集中计算均价

时间:2019-06-03 13:44:45

标签: stata

我有两个数据集,一个具有招聘员工的日期, 另一个带有销售日期和价格的信息。

数据集1:

clear
input recruited
19677
19722
19706
19720
19683
19706
19724
19691
19685
19722
end

数据集2:

clear
input sale price
19675 2527.6575
19676 2509.1436
19677  2508.804
19678  2504.077
19679 2509.3696
19680   2517.86
19681  2512.139
19682  2506.761
19683   2514.94
19684  2503.937
19685 2514.8074
19686  2505.992
19687  2504.697
19688  2505.775
19689  2507.996
19690  2516.008
19691  2504.835
19692  2503.215
19693  2515.244
19694  2503.113
19695  2507.949
19696   2508.18
19697  2524.451
19698  2505.442
19699  2500.929
19700   2501.44
19701 2527.3064
19702  2501.985
19703 2511.4536
19704  2502.151
19705  2519.524
19706  2500.673
19707  2515.225
19708 2498.6794
19709   2516.25
19710   2500.58
19711  2504.456
19712 2504.5725
19713   2503.44
19714  2505.886
19715  2501.839
19716  2513.524
19717  2513.454
19718  2506.562
19719 2505.4795
19720  2501.126
19721  2502.972
19722  2511.892
19723 2513.6755
19724  2503.164
19725 2505.1206
end

我希望在第一个数据集中的每个招聘日期获得平均价格 在该人被招募前60天之内。

如何在Stata中完成?

1 个答案:

答案 0 :(得分:1)

假设数据集分别称为dataset1.dtadataset2.dta,则可以使用 community-contributed 命令rangejoin获得所需的结果:

use dataset1, clear

generate obs = _n
generate sale = recruited

rangejoin sale -60 -1 using dataset2
collapse (mean) price (first) sale, by(obs)

format %td sale
list

     +----------------------------+
     | obs      price        sale |
     |----------------------------|
  1. |   1     2518.4   15nov2013 |
  2. |   2   2508.551   30dec2013 |
  3. |   3   2509.909   14dec2013 |
  4. |   4    2508.84   28dec2013 |
  5. |   5   2511.977   21nov2013 |
     |----------------------------|
  6. |   6   2509.909   14dec2013 |
  7. |   7   2508.724   01jan2014 |
  8. |   8   2510.623   29nov2013 |
  9. |   9   2511.469   23nov2013 |
 10. |  10   2508.551   30dec2013 |
     +----------------------------+

您可以从rangejoin安装SSC及其依赖项:

ssc install rangestat
ssc install rangejoin