R-连续数据帧元素的日志返回
我在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
> 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)))