【问题标题】:Creating a matrix of means based on column time series in R [closed]基于R中的列时间序列创建均值矩阵[关闭]
【发布时间】:2015-03-24 21:41:19
【问题描述】:

我有 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

【问题讨论】:

  • 你用什么创建这些矩阵?
  • 糟糕,我忘了提。我正在使用 R。
  • 您需要提供更多详细信息。语言、数据结构、文件类型等……
  • 问题需要更多细节,很难准确把握你想要什么。
  • 抱歉,现在好像更清楚了?

标签: r matrix mean


【解决方案1】:

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

你可以这样使用它:

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

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

【讨论】:

    【解决方案2】:

    这里明显的解决方案是使用矢量化的colMeans 函数(因为apply 是一个for 循环,随着数据集的增长变得低效)。试试这个

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

    【讨论】:

      【解决方案3】:

      这很简单。首先,您应该为每一列计算mean,然后您应该将生成的1x25 向量重新整形为5x5 矩阵:

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

      apply(data,2,mean) 计算data 每一列的平均值,matrix 根据其结果构造一个5x5 矩阵。

      【讨论】:

      • 非常感谢!工作正常。
      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2011-12-29
      • 2012-12-04
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多