基于组秩有条件求和值的Stata代码

基于组秩有条件求和值的Stata代码,stata,cumulative-sum,Stata,Cumulative Sum,我正试图为一个相当大的数据集3m观测值编写一个代码,该数据集已被划分为更小的组ID。对于下表中描述的每个观测值,我希望为排名在我以下的所有观测值创建一个变量值的累积和,但前提是排名较低的观测值等于我的观测值 [ 如果有办法的话,我想在不使用循环的情况下编写这段代码。 有人能帮我吗 谢谢大家! 更新: 我已经在下面粘贴了输出变量的方程式 更新2: 上表的CSV格式为: ID,Rank,Condition,Value,Expected output,, 1,1,30,10,0,, 1,2,40,20

我正试图为一个相当大的数据集3m观测值编写一个代码,该数据集已被划分为更小的组ID。对于下表中描述的每个观测值,我希望为排名在我以下的所有观测值创建一个变量值的累积和,但前提是排名较低的观测值等于我的观测值

[

如果有办法的话,我想在不使用循环的情况下编写这段代码。 有人能帮我吗

谢谢大家!

更新: 我已经在下面粘贴了输出变量的方程式

更新2: 上表的CSV格式为:

ID,Rank,Condition,Value,Expected output,,
1,1,30,10,0,,
1,2,40,20,0,,
1,3,20,30,0,,
1,4,30,40,10,,
1,5,40,50,20,,
1,6,20,60,30,,
1,7,30,70,80,,
2,1,40,80,0,,
2,2,20,90,0,,
2,3,30,100,0,,
2,4,40,110,80,,
2,5,20,120,90,,
2,6,30,130,100,,
2,7,40,140,190,,
2,8,20,150,210,,
2,9,30,160,230,,

如果我理解正确,对于ID和条件的每个组合,您希望计算变量值的运行总和,按秩排序,不包括当前观察值。如果这确实是您的目标,以下未经测试的代码可能会让您找到解决方案

sort ID Condition Rank
// be sure there is a single observation for each combination
isid ID Condition Rank
// generate the running sum
by ID Condition (Rank): generate output = sum(Value)
// subtract out the current observation
replace output = output - Value
// return to the original order
sort ID Rank
正如我所说的,这是未经测试的,因为我的Stata副本无法读取数据图片。如果您的测试显示它不完善,并且您自己无法解决问题,以可用格式提供示例数据将增加有人能够提供帮助的可能性


在编辑中添加:更正了isid命令。

我根本无法按照示例操作。请指导我们如何按照id 1的规则操作,例如0、0、0、10、20、30、80。谢谢你,尼克!我已用公式更新了问题。谢谢你,威廉!这是我在不必处理条件变量时使用的解决方案。我没有请注意,我编辑了你的帖子,将数据格式化为代码,而不是回流到一行中。你能解释一下,你是如何得到80而不是50的预期输出的吗t代表ID 1排名7?极好的诊断:问题的核心是bysort ID条件排名:generate output=sumValue-ValueThank you William!那80是个错误。它是50。