如何使用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