根据R中的列时间序列创建均值矩阵

时间:2015-01-26 13:12:47

标签: r matrix mean

我有25个不同投资组合月回报的时间序列作为列(S1B1,S1B2,S1B3,S1B4,S1B5,S2B1,S2B2,S2B3,S2B4,S2B5,(...),S5B5):

S1B1 S1B2 S1B3 S1B4 S1B5 (...) S5B5   
0.2  0.1  2.1  3.2  1.2        0.3
0.3  1.2  2.6  2.1  6.3        0.2
0.5  0.5  0.5  2.2  6.2        1.2
0.4  1.2  2.2  1.1  0.5        2.1

我想创建一个5x5矩阵,以下列方式显示每列的方法:

S1B1 S1B2 S1B3 S1B4 S1B5    
S2B1 S2B2 S2B3 S2B4 S2B5   
S3B1 S3B2 S3B3 S3B4 S3B5   
S4B1 S4B2 S4B3 S4B4 S4B5   
S5B1 S5B2 S5B3 S5B4 S5B5

3 个答案:

答案 0 :(得分:1)

您可以使用apply函数计算每列的平均值。

你可以这样使用它:

apply(M, 2, mean) # where M is your data (presumably a matrix or a data frame)

然后将每个结果放入矩阵中的一个条目中。

答案 1 :(得分:1)

这里显而易见的解决方案是使用向量化的colMeans函数(因为applyfor循环,随着数据集的增长而变得效率低下)。试试这个

matrix(colMeans(M), ncol = 5, byrow = TRUE)

答案 2 :(得分:0)

这非常简单。首先,您应为每列计算mean,然后将结果1x25向量重新整形为5x5矩阵:

matrix(apply(data,2,mean), nrow=5, ncol=5, byrow=TRUE)

apply(data,2,mean)计算每列datamatrix的平均值,从其结果中构建5x5矩阵。