跨行间隔计算平均值

时间:2013-07-04 20:43:12

标签: r

我有一个长矩阵,我需要计算一定行间隔的平均值。目前我正在手动执行此操作:

values <- cbind(1:50,1)

meanqual10 <- mean(values[1:10,1])
meanqual10
[1] 5.5
meanqual15 <- mean(values[11:20,1])
meanqual15
[1] 15.5
meanqual20 <- mean(values[21:30,1])
meanqual20
[1] 25.5
meanqual25 <- mean(values[31:40,1])
meanqual25
[1] 35.5
meanqual30 <- mean(values[41:50,1])
meanqual30
[1] 45.5

必须有一个更好的方法来做到这一点。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

如果你有规律的间隔,SeñorO的答案很好。另一种方法,如果你想选择任意行可能是这样的:

l <- list(1:10,11:20,21:30,31:40,41:50) # vectors of any length or ordering
sapply(l, function(x) mean(values[x,1]))

给出了:

[1]  5.5 15.5 25.5 35.5 45.5

当然,by也可以为任意行执行此操作。这只是一种略有不同的方法。

答案 1 :(得分:3)

by(values[,1], ceiling(1:50 / 10), mean)

ceiling(1:50/10)创建一个长度为50的向量,每10个数字都有一个新整数。

然后

by将为同一整数的每个组取mean

结果:

ceiling(1:50/10): 1
[1] 5.5
------------------------------------------------------------------------------------------------------ 
ceiling(1:50/10): 2
[1] 15.5
------------------------------------------------------------------------------------------------------ 
ceiling(1:50/10): 3
[1] 25.5
------------------------------------------------------------------------------------------------------ 
ceiling(1:50/10): 4
[1] 35.5
------------------------------------------------------------------------------------------------------ 
ceiling(1:50/10): 5
[1] 45.5