夏目贵志 发表于 2017-9-4 03:13
按人名和时间倒序排列,然后by varlist: keep if _n==1试试。
非常感谢您的回复。参照您的意见,我的问题已经得到解决。由于系统对表格内日期的形式不是完全识别,先重新生成了新的日期,又按照你的思路改写的。具体代码是:
gen date=date(rptdt,"YMD")
format date %td
gsort stkcd ananm -date
bysort stkcd ananm: keep if _n==1
非常感谢!
不好意思,请问为什么我做出来没有结果呢?我试过多年一起做的,不对,试了一年的也还是没有剔除之前预测的数据。
gen date=date(Rptdt,"YMD")
format date %td
gsort Stkcd Brokern -date
bysort Stkcd Brokern : keep if _n==1
这是我的代码,还请大神们帮帮忙~
万分感谢!但是,您的代码中产生的Tmax是某分析师对于某公司的最新值,比如A分析师对于M公司做了2008年2次、2009年2次、2010年3次预测,那么最终我们要保留的应该是2008年最新预测、2009年最新预测、2010年最新预测,而不是2009年最新的那次预测。可以在分组时加上一个year分组。
gen date=date(Rptdt,"YMD")
format date %td
gsort Stkcd Ananm -date
bysort Stkcd Ananm year: egen Tmax = max(date) //按照年份分组之后,再保留那一年的某公司、某分析师的最新的预测值
format Tmax %td
keep if date==Tmax