列对的矩阵平均值(matrix average of column pairs)

编程入门 行业动态 更新时间:2024-10-25 14:28:02
列对的矩阵平均值(matrix average of column pairs)

我有一个100 X 10矩阵,其中row是stock,column是每个月的价格。 我需要每2个月采用每种库存的平均价格(根据下面给出的矩阵,每种库存共计5次)。 这应该对所有100只股票进行。 我该怎么做呢?

msft 20 30 40 50 60 70 35 76 46 90 good 30 45 24 45 56 67 56 65 55 66 aapl 60 46 56 32 43 54 55 57 67 56 yhoo 64 54 45 56 67 66 78 65 77 78 bac 45 43 54 45 62 54 57 67 78 54 jpm 34 35 36 56 54 43 58 69 54 67

I have a 100 X 10 matrix, where row is stock and column is the price at each month. I need to take the average price of each stock for every 2 months (in all 5 times for each stock according to the matrix given below). This should be done for all 100 stocks. How do I do this?

msft 20 30 40 50 60 70 35 76 46 90 good 30 45 24 45 56 67 56 65 55 66 aapl 60 46 56 32 43 54 55 57 67 56 yhoo 64 54 45 56 67 66 78 65 77 78 bac 45 43 54 45 62 54 57 67 78 54 jpm 34 35 36 56 54 43 58 69 54 67

最满意答案

你可以做

(mat[, c(TRUE, FALSE)] + mat[, c(FALSE, TRUE)]) / 2

概括将是

n.by.n <- 2 j <- seq_len(ncol(mat)) j.list <- split(j, j %% n.by.n) m.list <- lapply(j.list, function(j)mat[, j, drop = FALSE]) Reduce(`+`, m.list) / n.by.n

您还可以使用矩阵乘法:

n.by.n <- 2 w <- matrix(0, ncol(mat), ncol(mat) / n.by.n) w[(row(w) + 1) %/% n.by.n == col(w)] <- 1 / n.by.n mat %*% w

You can do

(mat[, c(TRUE, FALSE)] + mat[, c(FALSE, TRUE)]) / 2

A generalization would be

n.by.n <- 2 j <- seq_len(ncol(mat)) j.list <- split(j, j %% n.by.n) m.list <- lapply(j.list, function(j)mat[, j, drop = FALSE]) Reduce(`+`, m.list) / n.by.n

You can also use a matrix multiplication:

n.by.n <- 2 w <- matrix(0, ncol(mat), ncol(mat) / n.by.n) w[(row(w) + 1) %/% n.by.n == col(w)] <- 1 / n.by.n mat %*% w

更多推荐

本文发布于:2023-07-30 00:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1320823.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:平均值   矩阵   matrix   pairs   column

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!