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



我有一个大型数据集,其中包含~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 次非常耗时。

有没有更好的方法?

使用具有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
}

最新更新