如何基于不同行中的值创建变量

时间:2017-02-26 09:03:11

标签: stata

我有一个按如下方式组织的Stata数据集:

payment   class    molecule State
10          1       1        1
8           2       1        1
25          3       2        1
7           4       2        1
12          1       1        2
5           2       1        2
24          3       2        2
7           4       2        2

如何创建一个变量,该变量是同一分子中各类之间支付变量的差异?

例如:

payment   class    molecule    State payment_difference
10          1       1            1      2
8           2       1            1      2
25          3       2            1      18
7           4       2            1      18
12          1       1            2      7
5           2       1            2      7
24          3       2            2      17
7           4       2            2      17

1 个答案:

答案 0 :(得分:1)

使用玩具示例:

clear

input payment class molecule state
10 1 1 1
8  2 1 1
25 3 2 1
7  4 2 1
12 1 1 2
5  2 1 2
24 3 2 2
7  4 2 2
end

以下对我有用:

bysort state molecule (class) : generate diff = payment[1] - payment[2]

list, separator(0)

     +-------------------------------------------+
     | payment   class   molecule   state   diff |
     |-------------------------------------------|
  1. |      10       1          1       1      2 |
  2. |       8       2          1       1      2 |
  3. |      25       3          2       1     18 |
  4. |       7       4          2       1     18 |
  5. |      12       1          1       2      7 |
  6. |       5       2          1       2      7 |
  7. |      24       3          2       2     17 |
  8. |       7       4          2       2     17 |
     +-------------------------------------------+

有关详细信息,请阅读Speaking Stata: How to move step by: step 在Stata Journal上。