我有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
答案 0 :(得分:1)
您可以使用apply
函数计算每列的平均值。
你可以这样使用它:
apply(M, 2, mean) # where M is your data (presumably a matrix or a data frame)
然后将每个结果放入矩阵中的一个条目中。
答案 1 :(得分:1)
这里显而易见的解决方案是使用向量化的colMeans
函数(因为apply
是for
循环,随着数据集的增长而变得效率低下)。试试这个
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)
计算每列data
和matrix
的平均值,从其结果中构建5x5
矩阵。