拆分,应用线性模型,组合

Nic*_*ick 2 split r list lapply lm

我有一个数据帧如下:

df

Date       Hour ID Par1  Par2  Par3 
08-01-15     0   A   2    3      4
08-01-15     0   B   4    5      6 
08-01-15     1   N   2    9      10
08-01-15     1   A   3    7      23
08-01-15     1   B   4    7      22
08-02-15     0   E   2    4      12
08-02-15     0   A   3    7       9
Run Code Online (Sandbox Code Playgroud)

所以我想按小时分割这个数据帧,如下所示:

splitdata<-split(df<-split(df, df$Hour)
Run Code Online (Sandbox Code Playgroud)

拆分后,我想将线性模型应用于拆分数据集.

result <- lapply(splitdata, function(df){
  lm1 <-lm(Par1~Par2,data=df)
  summary <- (lm1$summary)
  data.frame(as.list(summary))
})
result
Run Code Online (Sandbox Code Playgroud)

我的结果没有显示任何内容.虽然我将摘要改为:

summary <- (lm1$coef)
data.frame(as.list(summary))
Run Code Online (Sandbox Code Playgroud)

然后它会产生一个结果.

所以主要的问题是,如何按小时得到每个线性模型的摘要列表而不仅仅是系数?

谢谢!

pic*_*ick 6

尝试使用lmListnlme

library(nlme)
fits <- lmList(Par1 ~ Par2 | Hour, data=df)
Run Code Online (Sandbox Code Playgroud)

这会按小时分割数据并为您拟合线性模型.然后,你可以这样做summary(fits).或者,您可以单独查看每个摘要

lapply(fits, summary)
Run Code Online (Sandbox Code Playgroud)