R - 使用data.table或dplyr为每个主题拟合模型

时间:2016-07-06 18:13:30

标签: r data.table dplyr model-fitting

我有很多科目的观察结果,我想为每个科目拟合一个模型。

我正在使用包data.tablefitdistrplus,但也可以尝试使用dlpyr

说我的数据是这种形式:

#subject_id #observation
1           35
1           38
2           44
2           49

这是我迄今为止所做的尝试:

 subject_models <- dt[,fitdist(observation, "norm", method = "mme"), by=subject_id]

这会导致错误,因为对fitdist的调用会返回一个fitdist对象,而该对象无法存储在数据表/数据框中。

有没有直观的方法可以使用data.tabledplyr

执行此操作

编辑:提供了一个dplyr答案,但我也很感激data.table,我会尝试对这两个人进行一些基准测试。

1 个答案:

答案 0 :(得分:2)

使用purrr

可以轻松实现这一点

我认为@alistaire建议

同样的事情
library(purrr)
library(dplyr)
library(fitdistrplus)
dt %>% split(dt$subject_id) %>%  map( ~ fitdist(.$observation, "norm", method = "mme"))

或者,没有purrr

dt %>% split(dt$subject_id) %>%  lapply(., function(x) fitdist(x$observation, "norm", method = "mme"))