Stata代码根据组级别有条件地对值进行求和

时间:2017-06-14 18:30:46

标签: stata cumulative-sum

我正在尝试编写一个相当庞大的数据集(3米观测值)的代码,该数据集已被分隔成更小的组(ID)。对于每个观察(在下表中描述),我想为排在我下面的所有观测值创建变量“值”的累积和,条件是排名较低的观测值等于我的。

[Data[2]

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

谢谢!

更新: 我已经粘贴了下面输出变量的等式。

更新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,,

Equation

1 个答案:

答案 0 :(得分:1)

如果我理解正确,对于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命令。