根据唯一ID将大型数据集分成较小的组

时间:2018-10-22 13:28:33

标签: stata

我有一个庞大的数据集,拥有约600,000个观测值。我需要将其分为20组,每组30,000。

我没有Stata FAQ建议的分类组,因此使用:

keep if group == `i'

我认为不会为我工作。

我的数据集如下:

ID       Company
1        Aat
2        Adt
3        Bat
4        Bjt
5        Coffee
.        .
.        .
.        .
600,500  Zyborgg  

当前,我使用以下代码对其进行细分:

keep if id < 600000 & id >= 550000

但是,对于50,000个组,这样做13次非常耗时。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

使用具有600人工生成的观察结果的玩具数据集:

clear
set obs 600

generate var = rnormal()
generate group = int((_n - 1) / 30) + 1
save data, replace

以下对我有用:

forvalues i = 1 / 20 {
    use data if group == `i', clear
    save data`i', replace
}