Чтобы проиллюстрировать выбор из 10 наиболее часто используемых классов, мы построим здесь набор данных с 2 группами. В каждом есть 11 классов. Затем мы показываем общий метод, чтобы выбрать 10 наиболее часто.
* create sandbox dataset
clear
set obs 22
tokenize "`c(ALPHA)'"
generate name = ""
generate freq = _n
generate group = cond(_n <= 11, 1, 2)
forval j = 1/11 {
replace name = "``j''" if inlist(_n, `j', 23 - `j')
}
tabulate name group [fw=freq]
expand freq
drop freq
Вот как выглядит набор данных (результаты команды tabulate
выше):
| group
name | 1 2 | Total
-----------+----------------------+----------
A | 1 22 | 23
B | 2 21 | 23
C | 3 20 | 23
D | 4 19 | 23
E | 5 18 | 23
F | 6 17 | 23
G | 7 16 | 23
H | 8 15 | 23
I | 9 14 | 23
J | 10 13 | 23
K | 11 12 | 23
-----------+----------------------+----------
Total | 66 187 | 253
Десять самых распространенных классов - это K, J, ..., C, B для группы 1 и A, ..., J для группы 2.
Вот один из способов получения и составления графика 10 самых частых, определяемых отдельно для каждой группы. Код пользователя начинается здесь, с другим номером пользователя вместо 10, если это необходимо. Ничто в этом случае не зависит от наличия только двух групп, как в примере.
bysort group name : generate freq = _N
egen tag = tag(group name)
gsort group -tag -freq name
by group: generate selected = _n <= 10
bysort group name (selected) : replace selected = selected[_N]
graph hbar (count) if selected, over(name, sort(1) descending) by(group) nofill scheme(s1color)