我有两个数据集,一个具有招聘员工的日期, 另一个带有销售日期和价格的信息。
数据集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中完成?
答案 0 :(得分:1)
假设数据集分别称为dataset1.dta
和dataset2.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