如何使用Stata将最大值应用于整个组

如何使用Stata将最大值应用于整个组,stata,Stata,我想生成一个变量max_count,其中,对于给定的组ID,如果本年的count值高于上一年的值,则max_count取本年的值。本年度的价值将应用于后续年份,直到出现高于本年度的价值。例如,在下面的ID 2示例中,2001年的count值为10,但随后年份(2002年和2003年)的值小于10(即2和4),因此2002年和2003年的值取10(2001年之后的最高值) 我使用了这个Stata代码,但它不起作用: bysort id (Year): gen max_count=max(count

我想
生成一个变量
max_count
,其中,对于给定的组ID,如果本年的
count
值高于上一年的值,则
max_count
取本年的值。本年度的价值将应用于后续年份,直到出现高于本年度的价值。例如,在下面的ID 2示例中,2001年的
count
值为10,但随后年份(2002年和2003年)的值小于10(即2和4),因此2002年和2003年的值取10(2001年之后的最高值)

我使用了这个Stata代码,但它不起作用:

bysort id (Year): gen max_count=max(count, count[_n-1])
最高值仅适用于紧接下一年,而不是所有后续年份

ID  Year    count   max_count
1   2000    5          5
1   2001    0          5
1   2002    3          5
1   2003    7          7
2   2000    5          5
2   2001    10        10
2   2002    2         10
2   2003    4         10
3   2000    2         2
3   2001    5         5
3   2002    9         9
3   2003    6         9
有一个详细的讨论,如何获得这样的记录(最大或最小到目前为止是“记录”,如在体育运动中)

对于单线解决方案,从SSC安装
rangestat
,然后

rangestat (max) WANTED = count, int(Year . 0) by(ID) 
记录何时发生的问题自然是相关的:

by ID : gen when = Year[1]
by ID : replace when = cond(wanted > wanted[_n-1], Year, when[_n-1]) if _n > 1

微妙的措辞问题:本年度的价值与本年度的价值不同。
by ID : gen when = Year[1]
by ID : replace when = cond(wanted > wanted[_n-1], Year, when[_n-1]) if _n > 1