R 移动平均填充空数据。帧

R 移动平均填充空数据。帧,r,R,我相信在移动平均中有更优雅的编码方式,但我处于学习模式。想象一下SPX的月收盘价。我已经用一个for循环创建了一个移动平均值,它填充了一个空向量。它起作用了。这是代码 moving_average_new <- c() for(i in 1:(length(spx_Close)-10)) { moving_average_new[i] <- sum(spx_Close[i:(i+(10-1))])/10 } zoo软件包中的movin

我相信在移动平均中有更优雅的编码方式,但我处于学习模式。想象一下SPX的月收盘价。我已经用一个for循环创建了一个移动平均值,它填充了一个空向量。它起作用了。这是代码

moving_average_new <- c()
for(i in 1:(length(spx_Close)-10)) {
        moving_average_new[i] <- sum(spx_Close[i:(i+(10-1))])/10        
        }

zoo
软件包中的
moving\u average\u new
rollmean
可以做到这一点。下面是一个例子:

library(zoo)

rollmean(mtcars$mpg, k=10, align="left", fill=NA)

 [1] 20.37 20.05 19.59 19.04 18.42 17.59 16.82 16.86 17.66 18.42 19.89 20.26 20.17
[14] 19.96 19.77 20.65 22.34 23.47 23.27 21.81 20.39 19.74 20.33    NA    NA    NA
[27]    NA    NA    NA    NA    NA    NA
就您的功能而言,有一些问题需要解决

首先,函数没有参数。函数需要一个数据帧,因此需要一个参数
y
,该参数可以将数据帧传递到函数代码中

其次,计算值需要分配给
ma_new
中的一行和一列,而不仅仅是空数据框中的一行。例如,看看如果只执行
ma_new=data.frame(),会发生什么;ma_new[1]=10

第三,函数需要返回移动平均值的向量

以下是该函数的修订版本:

ma_func1 <- function(y) {               # Added argument y
  for (i in 1:(nrow(y) - 10)) {
    ma_new[i, "MovingAvg"] <- sum(y[(i:(i+10-1)),1])/10  # Assign value to column called "MovingAvg"
  }
  ma_new      # Return the vector of moving average values
}
ma_func1(mtcars)

zoo
包中的
rollmean
可以执行此操作。下面是一个例子:

library(zoo)

rollmean(mtcars$mpg, k=10, align="left", fill=NA)

 [1] 20.37 20.05 19.59 19.04 18.42 17.59 16.82 16.86 17.66 18.42 19.89 20.26 20.17
[14] 19.96 19.77 20.65 22.34 23.47 23.27 21.81 20.39 19.74 20.33    NA    NA    NA
[27]    NA    NA    NA    NA    NA    NA
就您的功能而言,有一些问题需要解决

首先,函数没有参数。函数需要一个数据帧,因此需要一个参数
y
,该参数可以将数据帧传递到函数代码中

其次,计算值需要分配给
ma_new
中的一行和一列,而不仅仅是空数据框中的一行。例如,看看如果只执行
ma_new=data.frame(),会发生什么;ma_new[1]=10

第三,函数需要返回移动平均值的向量

以下是该函数的修订版本:

ma_func1 <- function(y) {               # Added argument y
  for (i in 1:(nrow(y) - 10)) {
    ma_new[i, "MovingAvg"] <- sum(y[(i:(i+10-1)),1])/10  # Assign value to column called "MovingAvg"
  }
  ma_new      # Return the vector of moving average values
}
ma_func1(mtcars)

很抱歉我之前应该注意到,我正在尝试使用core R编程语言,而不是任何软件包。这是一个学习练习--试着在data.frames和Function中做我在循环和向量中能做的事情。对不起。我之前应该注意到,我正在尝试使用core R编程语言,而不是任何软件包。这是一个学习练习--尝试在data.frames和Function中做我能够在循环和向量中做的事情。