列对的矩阵平均值(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 67I 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 %*% wYou can do
(mat[, c(TRUE, FALSE)] + mat[, c(FALSE, TRUE)]) / 2A 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.nYou 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更多推荐
发布评论