平均R对象

时间:2014-12-02 08:13:31

标签: r object lapply

让我们说我有几个R对象,例如lm输出:

m1 <- lm(x ~ y, data = data, subset = sample==1)
m2 <- lm(x ~ y, data = data, subset = sample==2)
m3 <- lm(x ~ y, data = data, subset = sample==3)
m4 <- lm(x ~ y, data = data, subset = sample==4)

现在我想平均这些对象,即我想平均lm生成的所有估算值。我会很高兴如果我能得到对象中所有参数的汇总统计数据,即平均截距等。简化问题的是所有对象大致相同,只是在不同的样本上计算。

有没有办法以一般方式执行此操作,即使用单个通用函数而不是获取所有单个值并一次平均一个?另外,我需要这种功能用于不同类型的对象。

可能会以某种方式使用lapply,但是如何处理多个(变化的)嵌套层?

1 个答案:

答案 0 :(得分:0)

这应该有用(例如使用mtcars数据集):

library(dplyr)
meanpars <- mtcars %>%
              group_by(cyl) %>%
              do(mod = lm(mpg ~ wt, data = .)) %>%
              summarise(
               intercepts = coef(mod)[1],
               wtbeta     = coef(mod)[2]) %>%
              summarise(
               meaninter = mean(intercepts),
               meanbeta = mean(wtbeta))

这是您插入的玩具数据:

library(dplyr)
meanpars <- data %>%
              group_by(sample) %>%
              do(mod = lm(x ~ y, data = .)) %>%
              summarise(
               intercepts = coef(mod)[1],
               ybeta     = coef(mod)[2]) %>%
              summarise(
               meaninter = mean(intercepts),
               meanbeta = mean(ybeta))

编辑:如果你不想在最后对系数求平均值,只需删除最后一个汇总函数,你仍然会得到一个带有模型结果的data.frame。