R-连续数据帧元素的日志返回

R-连续数据帧元素的日志返回,r,R,我在R中有一个数据集,看起来像: > head(statadata_one_every_5_minutes) date time_greece gmt_offset_greece price_greece time_and_date gmt_offset_greece_test time_and_date_correct time_and_date_difference 1 2009-12-01 08:30:04.548

我在R中有一个数据集,看起来像:

> head(statadata_one_every_5_minutes)
         date  time_greece gmt_offset_greece price_greece           time_and_date gmt_offset_greece_test time_and_date_correct time_and_date_difference
1  2009-12-01 08:30:04.548                +2      2275.32 2009-12-01 08:30:04.548                      2   2009-12-01 06:30:04                   0 secs
6  2009-12-01 08:35:04.380                +2      2297.74 2009-12-01 08:35:04.380                      2   2009-12-01 06:35:04                   0 secs
11 2009-12-01 08:40:04.328                +2      2322.04 2009-12-01 08:40:04.328                      2   2009-12-01 06:40:04                   0 secs
16 2009-12-01 08:45:04.365                +2      2325.51 2009-12-01 08:45:04.365                      2   2009-12-01 06:45:04                   0 secs
21 2009-12-01 08:50:04.463                +2      2331.36 2009-12-01 08:50:04.463                      2   2009-12-01 06:50:04                   0 secs
26 2009-12-01 08:55:04.403                +2      2335.09 2009-12-01 08:55:04.403                      2   2009-12-01 06:55:04                   0 secs
   ID price_greece_numeric
1   1              2275.32
6   6              2297.74
11 11              2322.04
16 16              2325.51
21 21              2331.36
26 26              2335.09
我尝试使用以下命令计算连续元素的日志返回:

> n <- length(statadata_one_every_5_minutes$price_greece_numeric)
> statadata_one_every_5_minutes$log_returns <- log(statadata_one_every_5_minutes$price_greece_numeric[-1]/statadata_one_every_5_minutes$price_greece_numeric[-n])

>n statadata_one_every_5_minutes$log_返回
数据$value[-1]
删除行#1,这会给您一个短于1的数据帧-这也是错误状态,因为您正试图将此(短)结果rbind到原始数据帧

您没有指定如何处理最后一行,并且由于您没有指定pastable data.frame,因此我可以给出一个示例方法:

log(c(0,data$value)/c(data$value,0))[-1]

最后的
[-1]
删除了第一个值,因此结果的第一行是
log(data$value[1]/data$value[2])

您需要使用
滞后

library(dplyr)

statadata_one_every_5_minutes %>% 
  mutate(log_returns = log(price_greece_numeric/lag(price_greece_numeric)))

是的,我想计算价格的对数回报。我在我的原始帖子中添加了更多的数据点。我想要的是计算第二行与第一行元素之间的日志返回,然后是第三行与第二行的日志返回,一直到最后…好的,那么我应该写什么来计算数据框的日志返回呢?结果的第一行应该是NA(空)那么第二行应该有值
log(data$value[3]/data$value[2])
。您可以编辑您的响应以获得该值吗?最后一行呢?您确定不需要第一行->NA,第二行日志(row2/row1)是的,我想知道您在说什么…代码是怎么做的?
library(dplyr)

statadata_one_every_5_minutes %>% 
  mutate(log_returns = log(price_greece_numeric/lag(price_greece_numeric)))