如何找到具有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返回