我有一个以下结构的大数据框
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))))
感谢。
答案 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