R 移动平均填充空数据。帧
我相信在移动平均中有更优雅的编码方式,但我处于学习模式。想象一下SPX的月收盘价。我已经用一个for循环创建了一个移动平均值,它填充了一个空向量。它起作用了。这是代码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
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 newrollmean
可以做到这一点。下面是一个例子:
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中做我能够在循环和向量中做的事情。