3

我有一个 100 X 10 矩阵,其中行是股票,列是每个月的价格。我需要每 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
4

1 回答 1

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
于 2013-10-02T23:15:29.910 回答