楼主: 妖咬咬
5094 9

[数据管理求助] 分析师一年内有多个预测值。想取每个分析师一年内的最后一次预测值,如何实现? [推广有奖]

  • 5关注
  • 0粉丝

大专生

76%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
0.1800
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1824 点
帖子
32
精华
0
在线时间
27 小时
注册时间
2015-5-23
最后登录
2017-10-27

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如图所示,分析师在2009年内对某一只股票有多个预测值。如程娇翼,2009年1月13日、3月19、8月21与10月29共有四次预测,只想保留最后一次,即10月29日的预测1.64。如何实现呢?真的万分感谢! example.JPG
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何实现 分析师 预测值 如图所示 万分感谢

沙发
夏目贵志 发表于 2017-9-4 03:13:56 |只看作者 |坛友微信交流群
按人名和时间倒序排列,然后by varlist: keep if _n==1试试。

使用道具

藤椅
黃河泉 在职认证  发表于 2017-9-4 07:59:29 |只看作者 |坛友微信交流群
尔后建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 https://bbs.pinggu.org/thread-5048204-1-1.htmlhttps://bbs.pinggu.org/thread-5917273-1-1.html

使用道具

板凳
也是晴天 在职认证  学生认证  发表于 2017-9-6 22:36:33 |只看作者 |坛友微信交流群
gen date1=date(year,"YMD")
format date1 %td
bysort name: egen Tmax = max(date1)
format Tmax %td
keep if date1==Tmax

使用道具

报纸
妖咬咬 发表于 2017-9-7 17:31:58 |只看作者 |坛友微信交流群
夏目贵志 发表于 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
非常感谢!

使用道具

地板
妖咬咬 发表于 2017-9-7 17:33:18 |只看作者 |坛友微信交流群
也是晴天 发表于 2017-9-6 22:36
gen date1=date(year,"YMD")
format date1 %td
bysort name: egen Tmax = max(date1)
感谢您的回复,问题已经得到解决。

使用道具

7
妖咬咬 发表于 2017-9-7 17:47:29 |只看作者 |坛友微信交流群
黃河泉 发表于 2017-9-4 07:59
尔后建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出 ...
好的,已经明白。谢谢!
代码如下:
  1. gen date=date(rptdt,"YMD")
  2. format date %td
  3. gsort stkcd ananm -date
  4. bysort stkcd ananm: keep if _n==1
复制代码

另外附上有代表性的资料,感兴趣的人可以自己试一下。 example.xlsx (15.01 KB)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xyzzoey + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

8
闻道复临 发表于 2018-5-15 20:00:02 |只看作者 |坛友微信交流群
不好意思,请问为什么我做出来没有结果呢?我试过多年一起做的,不对,试了一年的也还是没有剔除之前预测的数据。
gen date=date(Rptdt,"YMD")
format date %td
gsort Stkcd Brokern -date
bysort Stkcd Brokern : keep if _n==1
这是我的代码,还请大神们帮帮忙~

使用道具

9
冯弋飞 发表于 2019-2-10 15:10:13 |只看作者 |坛友微信交流群
请问如何剔除保留最新的代码啊

使用道具

10
xyzzoey 在职认证  学生认证  发表于 2020-12-14 14:49:57 |只看作者 |坛友微信交流群
妖咬咬 发表于 2017-9-7 17:47
好的,已经明白。谢谢!
代码如下:
万分感谢!但是,您的代码中产生的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

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-6 19:02