让我们说我有几个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
,但是如何处理多个(变化的)嵌套层?
答案 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。