我创建了一个工作示例数据集:
input ///
group value
1 3
1 2
1 3
2 4
2 6
2 7
3 4
3 4
3 4
3 4
4 17
4 2
5 3
5 5
5 12
end
我的目标是找出value
内增量group
之间的最大距离。对于group 2
,这将是2
,因为4
之后的下一个最高值是6
。请注意,与value
相关的唯一4
为6
,而不是7
,因为7
不是4
之后的下一个最高值。群组3
的结果为0
,因为群组3
中只有一个值。每group
只会有一个结果。
我想得到什么:
input ///
group value result
1 3 1
1 2 1
1 3 1
2 4 2
2 6 2
2 7 2
3 4 0
3 4 0
3 4 0
3 4 0
4 17 15
4 2 15
5 3 7
5 5 7
5 12 7
end
订单并不重要,因此上面的订单可以毫无问题地改变。
任何提示?
答案 0 :(得分:2)
我可能已经弄明白了:
bys group (value): gen d = value[_n+1] - value[_n]
bys group: egen result = max(d)
drop d