我有一个看起来像这样的数据框(df):
group.no Amount Response
1 5 10
1 10 25
1 2 20
2 12 20
2 4 8
2 3 5
并且我已根据其组号将data.frame拆分为几个data.frame,并带有
out <- split( df , f = df$group.no )
现在,我要对“新”中所有新data.frames的数量〜响应之间的lm进行lm回归分析。请考虑这是一个示例,我在“ out”中有500个分割的data.frames
根据要对回归进行的处理,可以先使用magrittr
或dplyr
进行拆分,然后创建线性回归列表:
library(magrittr) #alternative library(dplyr)
df %>% split(.$group.no) %>% lapply(function(x) lm(Amount ~ Response, data = x))
如果您希望避免使用dplyr
语法,则可以将单个lapply
调用用作
lapply(split(df, df$group.no), function(x) lm(Amount ~ Response, data = x))
out
是数据帧的列表,因此您可以使用lapply()
估算每个数据帧的回归。
mods <- lapply(out, lm, formula=y~x)
然后mods
将是型号列表。
假定末尾的注释中可重复显示数据。如果您不想合并标准错误,请指定pool = FALSE
。
library(nlme)
lmList(Response ~ Amount | group.no, DF)
或执行完全独立回归的方法:
by(DF, DF$group.no, function(DF) lm(Response ~ Amount, DF))
Lines <- "group.no Amount Response
1 5 10
1 10 25
1 2 20
2 12 20
2 4 8
2 3 5"
DF <- read.table(text = Lines, header = TRUE)