Создать идентификатор группы сортировки без сортировки группы - PullRequest
0 голосов
/ 04 июля 2018

Я хотел бы создать идентификатор группы сортировки без сортировки группы.

var1 - моя переменная интереса и содержит некоторые случайные значения. id_1 - это уникальный идентификатор, основанный на _n из var1. group содержит информацию о группе, к которой относится соответствующее наблюдение var1. Обратите внимание, что строки в group не содержат никакой информации о сортировке, а это означает, что сортировка по алфавиту не имеет значения.

Я хотел бы создать id_group, потому что на следующем шаге я хотел бы свернуть var1 на group без потери сортировки group. Если я просто collapse(max) var1, by(group), Stata отсортирует результаты по group в алфавитном порядке - что мне не нужно. Я хотел бы создать id_group до collapse(max) var1, by(id_group) и сохранить порядок групп.

Я пытался работать с bysort, но эта команда сортирует group в алфавитном порядке, чтобы создать новый идентификатор. egen тоже не работает, потому что созданные идентификаторы не в отсортированном порядке.

clear
input   var1  id_var1 str6 group id_group
    3       1       "C"    1
    1       2       "C"    1
    9       3       "C"    1
    5       4       "A"    2
    3       5       "B"    3
    0       6       "F"    4
    9       7       "Z"    5 
    1       8       "Y"    6
    3       9       "T"    7
    2       10      "T"    7
end

1 Ответ

0 голосов
/ 04 июля 2018
clear
input   var1  id_var1 str6 group id_group
    3       1       "C"    1
    1       2       "C"    1
    9       3       "C"    1
    5       4       "A"    2
    3       5       "B"    3
    0       6       "F"    4
    9       7       "Z"    5 
    1       8       "Y"    6
    3       9       "T"    7
    2       10      "T"    7
end

gen wanted = sum(group != group[_n-1]) 

list , sepby(wanted) 

     +--------------------------------------------+
     | var1   id_var1   group   id_group   wanted |
     |--------------------------------------------|
  1. |    3         1       C          1        1 |
  2. |    1         2       C          1        1 |
  3. |    9         3       C          1        1 |
     |--------------------------------------------|
  4. |    5         4       A          2        2 |
     |--------------------------------------------|
  5. |    3         5       B          3        3 |
     |--------------------------------------------|
  6. |    0         6       F          4        4 |
     |--------------------------------------------|
  7. |    9         7       Z          5        5 |
     |--------------------------------------------|
  8. |    1         8       Y          6        6 |
     |--------------------------------------------|
  9. |    3         9       T          7        7 |
 10. |    2        10       T          7        7 |
     +--------------------------------------------+
...