重新排列数据框的列并计算平均值

时间:2017-01-14 21:31:13

标签: r dataframe

我有一个以下结构的大数据框

input <- data.frame(c(1,2,3,4), c(5,6,7,8))

总是两个值是重复的(1和2,3和4,5和6,7和8)我想计算每对的平均值并生成以下新数据作为输出

output <- data.frame(c(mean(c(1,2)), mean(c(3,4))),
                     c(mean(c(5,6)), mean(c(7,8))))

感谢。

3 个答案:

答案 0 :(得分:4)

odd <- seq.int(1L, nrow(input), 2L)  ## odd row index
output <- (input[odd, ] + input[-odd, ]) / 2

答案 1 :(得分:2)

aggregate(x = input, by = list(replic, pair), FUN = "mean")
#   Group.1 Group.2   a   b
# 1    rep1       1 1.5 5.5
# 2    rep2       2 3.5 7.5

数据:

input <- data.frame(a = c(1,2,3,4), b = c(5,6,7,8))
replic <- rep(c('rep1', 'rep2'), each=2)
pair <- rep(c(1,2), each = 2)

答案 2 :(得分:1)

我们可以使用@include grid-column-end;

rowsum

对于一般情况,

rowsum(input, group = rep(1:2, each = 2))/2
#    a   b
#1 1.5 5.5
#2 3.5 7.5

或者@李哲源ZheyuanLi

的建议
rowsum(input, group = (seq_len(nrow(input))-1)%/%2 + 1)/2