楼主: idanxibao
2183 2

[编程问题求助] 求问怎么得到最大值序号?并赋值给第一个观测值 [推广有奖]

  • 0关注
  • 0粉丝

初中生

9%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
83 点
帖子
2
精华
0
在线时间
21 小时
注册时间
2012-10-28
最后登录
2018-2-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个时间序列,需要以60天为一个时间段来求某变量的最大值及其序号。

我要根据每个时间段的最大值来求解该时间段内的最大收益差
因为时间段之间大部分是有间隔的,也有些时间段可能存在重叠。所以我想将每个时间段的最大值及其序号,赋值给该时间段的第一个观测值以此来方便之后的计算
求问我该怎么把最大值及其序号赋值给该时间段的第一个观测值?

举个例子,比方说某个时间段是从20150101开始的,我希望得到的数据格式:
时间          收益        最大值        最大值序号
20150101        0.5        0.8                   24
20150102        0.6        .                    .
…                …        …                 …
20150228        0.4        .                   .       


之前有帖子提过相似问题,但需要sort,我的数据量太大,而且时间段很多,sort起来太慢了
我自己的想法是:
forv i=1/n{
gen id=_n if daily<=0 & daily>=60 & stock==z
egen maxc=max(Clsprc) if id!=.
replace maxc_id=id if maxc==Clsprc
}
但我不知道怎么把id赋值给第一个观测值?
求问各位高手该怎么编程?
二维码

扫码加我 拉你入群

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

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

关键词:观测值 最大值 replace Daily place 最大值 时间段 收益

沙发
whgyu 发表于 2016-7-6 10:19:28 |只看作者 |坛友微信交流群
其实sort很快的,因为你只要60个数。假设你有个变量period对应每个时间段, 在时间段内变量time从1-60对应时间序列

sort period time
by period: egen max = max(Clsprc)
gen date = time if Clsprc)==max
sort period date
by period: replace date=date[_n-1] if _n>1
sort period time


使用道具

藤椅
idanxibao 发表于 2016-7-6 11:50:23 |只看作者 |坛友微信交流群
非常感谢你的解答
但是我的总数据量太大了,有百万条观测值,如果用了sort的话在进行下一个时间段的计算时需要对整体sort,这样比较慢
我自己想了个办法,单独求这个最大值的编号然后赋值给第一个观测值,这样应该会快一些。
谢谢你啦

使用道具

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

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

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

GMT+8, 2024-4-28 00:36