5

给定一个包含两列的数据框,我希望计算第三列,该列将包含每 n 行的平均值,同时保持数据框完整。

给定数据框

 index<-1:20
 V<-c(2,5,7,4,8,9,4,6,8,NA,3,4,5,6,0,4,5,7,5,3)
 DF<-data.frame(index,V)

我怎样才能创建 DF$mean 这将是每 5 行的非滚动平均值。

   index V  mean
      1 2    5.2
      2 5    5.2
      3 7    5.2
      4 4    5.2
      5 8    5.2
      6 9    6.75
      7 4    6.75    
      8 6    6.75    
      9 8    6.75    
     10 NA   6.75  
     11 3    3.6
     12 4    3.6
     13 5    3.6
     14 6    3.6 
     15 0    3.6
     16 4    4.8
     17 5    4.8
     18 7    4.8
     19 5    4.8
     20 3    4.8
4

2 回答 2

6

您可以使用 colMeans 和 rep

DF$mean <- rep(colMeans(matrix(DF$V, nrow=5), na.rm=TRUE), each=5)
于 2012-10-05T21:10:53.910 回答
5
DF$mean <- ave(DF$V, 
               rep(1:(nrow(DF)/5), each=5), 
               FUN=function(x){mean(x, na.rm=TRUE)})

这使

> DF
   index  V mean
1      1  2 5.20
2      2  5 5.20
3      3  7 5.20
4      4  4 5.20
5      5  8 5.20
6      6  9 6.75
7      7  4 6.75
8      8  6 6.75
9      9  8 6.75
10    10 NA 6.75
11    11  3 3.60
12    12  4 3.60
13    13  5 3.60
14    14  6 3.60
15    15  0 3.60
16    16  4 4.80
17    17  5 4.80
18    18  7 4.80
19    19  5 4.80
20    20  3 4.80
于 2012-10-05T21:15:24.993 回答