stata中基于秩的累加
我正在研究一个考试成绩数据库,希望建立两个观察结果。数据中有英语成绩、数学成绩、排名和每个孩子的唯一id。让我们把为其构建观测的孩子称为“焦点孩子”stata中基于秩的累加,stata,Stata,我正在研究一个考试成绩数据库,希望建立两个观察结果。数据中有英语成绩、数学成绩、排名和每个孩子的唯一id。让我们把为其构建观测的孩子称为“焦点孩子” Obs 1所有排名在重点儿童以下且数学成绩高于重点儿童的儿童的平均英语成绩 Obs 2所有排名在重点儿童以下且数学成绩低于重点儿童的孩子的平均英语成绩 如果可能的话,请帮助我写这个没有循环的代码。(我有大约10万次观察) 更新1我正在为每个孩子而不是一个孩子建立这些观察结果 循环 * toy dataset clear set obs 5 s
* 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'
}
玩具数据集
清楚的
设置obs 5
播种2803
发电机id=\u n
gen rnd=符形()
分类rnd
gen秩=\u n
gen math=100*runiform()
gen english=100*符形()
*真实代码
上一代数学=。
gen math_下文=。
排序等级
forval j=2/`N'{
局部J=`J'-1
su-english if math>math['j']in 1/'j',仅表示
将上述数学_=r(平均值)替换为'j'
如果数学您计划只为您确定的一个特定孩子计算一次这两个值,还是为10万个孩子中的每一个计算这两个值?如果你只做了一次,或者你想给你的100k个观察值加上两个额外的值,这会有很大的不同。我希望这只是为了一个孩子。那对我来说更简单。这是给每个孩子的。这正是让我害怕的。在这种情况下,更多关于你数据的信息可能会有所帮助。排名的值是-1到100000,还是百分位数-1到100?数学成绩有什么价值观?我认为循环是不可避免的,但是如果排名和数学分数的组合足够少,你可以避免重复计算相同的组合。排名从1到100k。有重叠,但数量较少。此外,所有分数都是小数点后3位以内的百分比分数