列对的矩阵平均值

时间:2013-10-02 23:13:35

标签: r matrix

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

1 个答案:

答案 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