bin / group不同长度的数字向量

时间:2013-05-15 10:07:01

标签: r statistics bin

我有不同长度的数字向量,范围从300到500.我想将它们“标准化”到100的长度,即对于长度为300的向量,我取3个值的平均值,对于向量长度500是5个值的平均值,依此类推。

如何在不重新排序的情况下对数字向量进行分类并计算均值?到目前为止,我还没有成功cut

# numeric vectors of different lengths
v1 = rnorm(300)
v2 = rnorm(500)

# goal: numeric vectors of same length
v1.binned = c(mean(v1[1],v1[2],v1[3]), ...)
v2.binned = c(mean(v2[1],v2[2],v2[3], v2[4], v2[5]), ...)

1 个答案:

答案 0 :(得分:0)

您可以将向量转换为matrix并使用colMeans

colMeans(matrix(v1,100))
[1] -0.09583398  0.01330998  0.11107002
colMeans(matrix(v2,100))
[1] -0.02396420  0.08638535 -0.03953273  0.09861287  0.01112838

如果切割尺寸不是矢量尺寸的精确倍数,请注意回收。在这种情况下,split - sapply策略可以完成这项工作:

sapply(split(v1,(seq_along(v1)-1)%/%200),mean)
        0         1 
-0.041262  0.111070