基于排名的stata积累

时间:2017-07-15 11:42:05

标签: stata

我正在研究测试成绩数据库,并希望建立两个观察结果。该数据具有行英语分数,数学分数,等级以及每个孩子的唯一ID。让我们打电话给我们正在建立观察的孩子#34;焦点孩子"

  1. Obs 1 所有孩子的平均英语成绩排名低于焦点小孩,其数学成绩高于焦点小孩
  2. Obs 2 所有孩子的平均英语成绩排名低于焦点小孩,其数学成绩低于焦点小孩的成绩
  3. 如果可能的话,请帮助我编写没有循环的代码。 (我有大约10万次观察)

    更新1 我正在为每个孩子而不仅仅是一个孩子构建这些观察结果。

1 个答案:

答案 0 :(得分:0)

循环!

* toy dataset  
clear
set obs 5 
set seed 2803 
gen id = _n 
gen rnd = runiform()
sort rnd 
gen rank = _n 
gen math = 100 * runiform() 
gen english = 100 * runiform() 

* code for real   
gen math_above = . 
gen math_below = .

sort rank  

forval j = 2/`=_N' { 
    local J = `j' - 1 
    su english if math > math[`j'] in 1/`J', meanonly 
    replace math_above = r(mean) in `j' 

    su english if math < math[`j'] in 1/`J', meanonly 
    replace math_below = r(mean) in `j' 
}