2017-08-13 15 views
0

我有一个数据集,看起来是这样的:塔塔:最低和最高15分钟的窗口内,在一定条件下

exec_minute price  volume 
13.43   96.125  1000 
28.43056  94.5   2500 
28.43056  96   2500 
29.42889  96.068  500 
29.42889  96.068  500 
32.42028  96.953  1000 
32.42056  96.953  1000 
32.43278  96.042  1200 
33.42639  95.917  1200 
42.41667  96.042  4000 
42.42139  96.042  300 
48.45833  98.323295 11000 
50.46028  97   300 
50.46028  97   11000 
50.46028  97   300 
50.46305  97   11000 
56.46333  95.51  2000 

我想要聚合15分钟的窗口内发生,并有所有行业相同的量,取最大和最小价格,然后使用这些最大和最小价格进一步计算。

任何人都可以帮我解决这个问题吗?我试过使用 egen min_price =(价格)

toegther with some if语句,但它似乎只适用于整个数据集。

在此先感谢!
J

回答

0

help egenhelp by可能是开始的地方。

,我会去这样做的方法是:

  1. 创建一个分类变量即每次15分钟的窗口不同的值。
  2. 使用egen创建最小和最大变量by分类变量和体积。

如果添加你想你的问题一些代码,仍然不能得到你想要的,我很高兴来编辑我的答案来回答这个问题

编辑的编码部分的内容:

根据您的评论更新了一下,你可以用这样的代码来获得的指标变量,然后你可以使用byegen得到什么(至少我怎么解释),你想要什么

// generate variable for window indicator 
gen window_indicator = . 

// get the max value and divide by window length 
sum exec_minute 
local max = floor(`r(max)'/15) 


// loop over values from 0 to max and replace window indicator 
// to be equal to the local ii for each section 
forvalues ii = 0/`max' { 
    replace window_indicator = `ii' if exec_minute> `ii'*15 & exec_minute< (`ii'+1)*15 

} 
+0

谢谢你的回答,埃里克。 我知道egen和函数,但在代码中使用它们会定义僵硬的15分钟窗口,而不是移动窗口(即1→15,2→16等)。为此,我需要15个个体变量,这是绝对不切合实际的。对不起,我原来的问题没有说清楚。最好,J –

+0

做编辑帮助@JanoschBode? –