R 用不同代码和不同大小计算移动平均线

R 用不同代码和不同大小计算移动平均线,r,moving-average,R,Moving Average,我有一个数据框,其中包含不同观测值的数据,观测值用唯一的代码分组。作为一个可再现的示例,以下是模拟数据的样子: v <- c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6) mat1 <- matrix(runif(200),40) mat1 <- cbind(v,mat1) mat1 <-as.data.frame(mat1) names(mat1) <

我有一个数据框,其中包含不同观测值的数据,观测值用唯一的代码分组。作为一个可再现的示例,以下是模拟数据的样子:

v <- c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6)
mat1 <- matrix(runif(200),40)
mat1 <- cbind(v,mat1)
mat1 <-as.data.frame(mat1)
names(mat1) <- c('code','x1','x2','x3','x4','x5')
unq <- unique(mat1$code)
,但有两件事我想不出来:

(1) 由于实际数据集比模拟数据集大得多,我如何动态地遍历所有唯一代码并进行计算,注意每个唯一代码的前两个和后两个观察值都应该为零(我最终将消除它们)

(2) 每个唯一代码的观察次数不同,其中一些少于4次,在这种情况下,无法对该代码进行任何计算

非常感谢您的帮助


谢谢你

@Adii谢谢,有用的函数,它使平均值计算更容易,但我仍在努力满足其他要求,如如何动态遍历唯一代码等。使用
apply
函数如何?或者我正在使用apply的@Adii_。但是我不知道如何对每组代码按顺序进行计算,因为它们的大小不同。@Adii_我已经编辑了这个问题,计算特定的唯一代码是硬编码的,当然我可以使用
apply
对所有列进行计算。但我不知道如何对所有代码进行智能化处理。让我们来看看。
K <- data.frame(code=mat1$code,x1=rep(0,40),x2=rep(0,40),x3=rep(0,40),x4=rep(0,40),x5=rep(0,40))
for ( i in 3:(nrow(mat1)-2)){
  if(mat1$code[i]==unq[1]){
    K[i,2] <- mean(mat1[i-2:i+2,2]) 
  }
}