2016-07-06 63 views
0

我對許多主題有一組觀察值,我想爲每個主題擬合一個模型。 。R - 使用data.table或dplyr爲每個主題擬合模型

我「米使用包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

棒模型列,直到你可以簡化它。 [這裏是一個關於這樣做的視頻。](http://edinbr.org/edinbr/2016/05/11/may-Hadley-Update2-PostingTalk.html) – alistaire

回答

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")) 
+0

謝謝你的回答@Sumedh。在R/dplyr中有沒有簡單的方法來並行化地圖調用? – Bar

+0

@Bar,我沒有足夠的關於R中的並行化來響應 – Sumedh

+0

@Bar根據你的關於如何並行化的評論 - 你可能想要開一個新的問題,展示這個技術,然後展示你嘗試過的嘗試並行。 – JasonAizkalns