Генерация переменной группами, принимающими значения определенных наблюдений - PullRequest
1 голос
/ 16 февраля 2020

У меня есть набор данных только с переменной values:

clear
input value new_var
1   1
3   3
5   5 
30  1 
40  3 
50  5 
11  1
12  3
13  5
end

Как мне сгенерировать новую переменную new_var, содержащую повторяющуюся последовательность первых трех наблюдений в value?

1 Ответ

1 голос
/ 16 февраля 2020

Есть много способов сделать это: вот два:

clear
input value new_var
1   1
3   3
5   5 
30  1 
40  3 
50  5 
11  1
12  3
13  5
end

egen index = seq(), to(3)
generate wanted = value[index]

generate direct = cond(mod(_n, 3) == 1, 1, cond(mod(_n, 3) == 2, 3, 5))

list, sep(3)

     +-------------------------------------------+
     | value   new_var   index   wanted   direct |
     |-------------------------------------------|
  1. |     1         1       1        1        1 |
  2. |     3         3       2        3        3 |
  3. |     5         5       3        5        5 |
     |-------------------------------------------|
  4. |    30         1       1        1        1 |
  5. |    40         3       2        3        3 |
  6. |    50         5       3        5        5 |
     |-------------------------------------------|
  7. |    11         1       1        1        1 |
  8. |    12         3       2        3        3 |
  9. |    13         5       3        5        5 |
     +-------------------------------------------+
...