如何找到变量内值的最大距离
How to find maximum distance apart of values within a variable
我创建了一个工作示例数据集:
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
我的目标是找出 group
内增量 value
秒之间的最大距离。对于 group 2
,这将是 2
,因为 4
之后的下一个最高值是 6
。请注意,与 4
相关的唯一 value
是 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
顺序并不重要,所以上面的顺序可以更改。
有什么建议吗?
我可能已经想通了:
bys group (value): gen d = value[_n+1] - value[_n]
bys group: egen result = max(d)
drop d
我创建了一个工作示例数据集:
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
我的目标是找出 group
内增量 value
秒之间的最大距离。对于 group 2
,这将是 2
,因为 4
之后的下一个最高值是 6
。请注意,与 4
相关的唯一 value
是 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
顺序并不重要,所以上面的顺序可以更改。
有什么建议吗?
我可能已经想通了:
bys group (value): gen d = value[_n+1] - value[_n]
bys group: egen result = max(d)
drop d