我有一个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
答案 0 :(得分:6)
你可以做到
(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