根据标准,平均超过特定行数

时间:2016-11-10 23:30:20

标签: r

我的数据结构如下:

set.seed(20)
RawData <- data.frame(Trial = c(rep(1, 10), rep(2, 10)),
                        X_Velocity = runif(20, 1, 3), 
                        Y_Velocity = runif(20, 4, 6))

我现在希望为每个X_Velocity计算每两行Y_VelocityTrial的平均值。我预期的输出,前四行将是:

X_Velocity_AVG       Y_Velocity_AVG
NA                   NA
2.6460545            4.522224
NA                   NA
1.8081265            4.5175165

如何完成此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用函数f执行此操作,其中计算每两个元素的平均值:

f <- function(a) tapply(a, rep(1:(length(a)/2), each = 2), FUN = mean)

res <- data.frame(X_Velocity_AVG=rep(NA, nrow(RawData)), 
                  Y_Velocity_AVG=rep(NA, nrow(RawData)))
res$X_Velocity_AVG[c(F,T)] <- f(RawData$X_Velocity)
res$Y_Velocity_AVG[c(F,T)] <- f(RawData$Y_Velocity)

   # X_Velocity_AVG Y_Velocity_AVG
# 1              NA             NA
# 2        2.646055       4.522224
# 3              NA             NA
# 4        1.808127       4.517517
# 5              NA             NA
# 6        2.943262       4.334551
# 7              NA             NA
# 8        1.162082       5.899396
# 9              NA             NA
# 10       1.697668       4.739195
# 11             NA             NA
# 12       2.473324       4.778723
# 13             NA             NA
# 14       1.744730       5.020097
# 15             NA             NA
# 16       1.644518       4.986245
# 17             NA             NA
# 18       1.431219       5.375815
# 19             NA             NA
# 20       2.108719       4.909284