如何平均列表中的每2n个元素?

时间:2018-11-06 19:47:05

标签: r list average

我有一个86个值的列表,其中每两个列出的是一个样本的结果。我正在测量43个样本。

例如(abbrv)

   5.157
4.266
5.118
5.473
4.909
5.093

我正在尝试获得最终结果

4.7115
5.2955
5.001

2 个答案:

答案 0 :(得分:1)

我们使用gl创建分组变量,并使用mean分组

unname(tapply(v1,  as.integer(gl(length(v1), 2, length(v1))), FUN = mean))
#[1] 4.7115 5.2955 5.0010

数据

v1 <- c(5.157, 4.266, 5.118, 5.473, 4.909, 5.093)

答案 1 :(得分:0)

另一个选择是添加索引列。

library(tidyverse)

#Sample data
set.seed(123)
df <- data.frame(x = rnorm(10, mean = 10, sd = 2))

df %>% 
  mutate(index = rep(1:(nrow(df)/2), each = 2)) %>% 
  group_by(index) %>% 
  summarise(xMean = mean(x)) %>% 
  ungroup()

输出:

  index xMean
  <int> <dbl>
1     1  9.21
2     2 11.6 
3     3 11.8 
4     4  9.20
5     5  8.87