Stata 为每个唯一ID堆叠变量

Stata 为每个唯一ID堆叠变量,stata,Stata,我使用Stata13将多个变量堆叠成一个变量,使用 stack stand1-stand10, into(all) 但是,我需要为每个与all平行粘贴的唯一id执行此操作,例如: bysort familyid: stack stand1-stand10,into(all) keep familyid 我们可以使用与您的数据示例更简单的模拟 clear set obs 3 gen familyid = _n forval j = 1/3 { gen stand`j' = _n

我使用Stata13将多个变量堆叠成一个变量,使用

stack stand1-stand10, into(all)
但是,我需要为每个与
all
平行粘贴的唯一id执行此操作,例如:

bysort familyid: stack stand1-stand10,into(all) keep familyid

我们可以使用与您的数据示例更简单的模拟

clear 
set obs 3 
gen familyid = _n 
forval j = 1/3 { 
    gen stand`j' = _n * `j'
}

list 

     +-------------------------------------+
     | familyid   stand1   stand2   stand3 |
     |-------------------------------------|
  1. |        1        1        2        3 |
  2. |        2        2        4        6 |
  3. |        3        3        6        9 |
     +-------------------------------------+

save original
要使用标识符堆叠,只需重复标识符变量名。对于多个变量,使用循环准备调用是最简单的

forval j = 1/3 { 
    local call `call' familyid stand`j' 
}

di "`call'" 
familyid stand1 familyid stand2 familyid stand3


stack `call', into(familyid stand) 
sort familyid _stack 
list, sepby(familyid) 

     +---------------------------+
     | _stack   familyid   stand |
     |---------------------------|
  1. |      1          1       1 |
  2. |      2          1       2 |
  3. |      3          1       3 |
     |---------------------------|
  4. |      1          2       2 |
  5. |      2          2       4 |
  6. |      3          2       6 |
     |---------------------------|
  7. |      1          3       3 |
  8. |      2          3       6 |
  9. |      3          3       9 |
     +---------------------------+
也就是说,使用
重塑long
更容易

use original, clear 
reshape long stand, i(familyid) j(which) 
list, sepby(familyid)  

     +--------------------------+
     | familyid   which   stand |
     |--------------------------|
  1. |        1       1       1 |
  2. |        1       2       2 |
  3. |        1       3       3 |
     |--------------------------|
  4. |        2       1       2 |
  5. |        2       2       4 |
  6. |        2       3       6 |
     |--------------------------|
  7. |        3       1       3 |
  8. |        3       2       6 |
  9. |        3       3       9 |
     +--------------------------+

非常感谢你,尼克!调用方法工作得非常好!