Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到具有for循环的两行的平均值?_R - Fatal编程技术网

如何找到具有for循环的两行的平均值?

如何找到具有for循环的两行的平均值?,r,R,请参见下面的“我的数据格式” Date AMZN.Closing.Price AMZN.Daily.Percent.Return 1 2004-12-31 44.29 NA 2 2005-01-03 44.52 0.5193046 3 2005-01-04 42.14 -5.3459119 4 2005

请参见下面的“我的数据格式”

     Date AMZN.Closing.Price AMZN.Daily.Percent.Return
1 2004-12-31              44.29                        NA
2 2005-01-03              44.52                 0.5193046
3 2005-01-04              42.14                -5.3459119
4 2005-01-05              41.77                -0.8780256
5 2005-01-06              41.05                -1.7237252
6 2005-01-07              42.32                 3.0937881
我试图找到所有行的平均每日收益率(例如:-5.3459119+0.5193046/2)

这是我目前的代码。我不确定如何引用所有行

> for (rows in data$AMZN.Daily.Percent.Return) {return = x[2]+x[3]/2}
> return
[1] -2.153651

这不需要使用循环来完成,但是

data$res=NA
for (i in 2:nrow(data)) {
    data$res[i]=mean(data$AMZN.Daily.Percent.Return[(i-1):i])
}
另类

(tail(data$AMZN.Daily.Percent.Return,-1)+head(data$AMZN.Daily.Percent.Return,-1))/2

您可以使用滚动函数为每个
n
值取平均值。单向使用
zoo
rollmeanr

data$avg_return <- zoo::rollmeanr(data$AMZN.Daily.Percent.Return, 2, fill = NA)
data$avg_return
#[1]         NA         NA -2.4133037 -3.1119687 -1.3008754  0.6850314
数据$avg\u返回