n行的静态平均值列

时间:2012-10-05 21:08:39

标签: r mean

给定一个包含两列的数据框,我想要计算第三列,它将包含每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

2 个答案:

答案 0 :(得分:6)

您可以使用colMeans和rep

DF$mean <- rep(colMeans(matrix(DF$V, nrow=5), na.rm=TRUE), each=5)

答案 1 :(得分: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