Разделение большого набора данных на более мелкие группы на основе уникальных идентификаторов - PullRequest
0 голосов
/ 22 октября 2018

У меня большой набор данных с ~ 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

Однако онэто занимает много времени, чтобы сделать это 13 раз для групп из 50 000 человек.

Есть ли лучший способ?

1 Ответ

0 голосов
/ 22 октября 2018

Использование набора данных игрушек с 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
}
...