温馨提示:本文翻译自stackoverflow.com,查看原文请点击:stata - Generating variable by groups taking values of certain observations
stata

stata - 通过获取某些观测值的组来生成变量

发布于 2020-05-04 22:58:20

我有一个仅包含变量的数据集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

查看更多

提问者
garej
被浏览
20
Nick Cox 2020-02-16 20:27

做到这一点的方法很多:这里有两种:

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 |
     +-------------------------------------------+