如何对不同级别的因子变量进行矩阵计算(例如协方差矩阵)

时间:2016-06-07 04:32:59

标签: r matrix

我有以下简化问题:

temp <- matrix(rnorm(900), ncol = 3)
lev <- as.factor(rep(c("a", "b", "c"), each = 100))
dfr <- data.frame(lev = lev, temp = temp)

我想计算三个级别中每个级别的方差 - 协方差矩阵。我该如何有效地做到这一点?

非常感谢您花时间阅读(并希望回答)我的问题!

2 个答案:

答案 0 :(得分:0)

没关系。我找到了解决方案:

lapply(split(dfr, dfr$lev), function(x) var(x[,-1]))

答案 1 :(得分:0)

我们可以使用data.table

library(data.table)
setDT(dfr)[, as.list(var(.SD)), lev]

或使用by

中的base R
by(dfr[-1], list(dfr[,1]), FUN = var)