Rstudioでグループ別のglmを教えてください


下記のデータフレーム（df）で  
`glm(BP ~ age + sex + BMI, data = df)` を実施しています。  
データフレームをそのままでグループ別（sex）に分析する方法はありますか？

**対象のデータフレーム:**

[code]

    ID　age　sex　BP　BMI
    1　　43　　0　120　21
    2　　62　　1　130　26
    3　　54　　1　132　23
    4　　55　　0　110　19
    
[/code]




dplyr を使う場合。

[code]

    suppressMessages(library(dplyr))
    
    df <- data.frame(
        ID = 1:4, age = c(43, 62, 54, 55), sex = c(0, 1, 1, 0),
        BP = c(120, 130, 132, 110), BMI = c(21, 26, 23, 19)
    )
    
    result <- df %>% group_by(sex) %>% do(model = glm(BP ~ age + sex + BMI, data = .))
    
    result$sex
    result$model
    
[/code]

> summary()を使用した結果もグループ別に見たい

`purrr` ライブラリの `map` を使う場合。

[code]

    library(purrr)
    
    result$model %>% map(summary)
    
[/code]

**追記**

> グループ別にモデルに出力は可能ですか

少し趣向が異なるかもしれませんが、`names()` でそれぞれに名前を付けることができます。

[code]

    names(result$model) = c("men", "women")
    result$model$men
    result$model$women
    
[/code]




dplyr を使う場合。

[code]

    suppressMessages(library(dplyr))
    
    df <- data.frame(
        ID = 1:4, age = c(43, 62, 54, 55), sex = c(0, 1, 1, 0),
        BP = c(120, 130, 132, 110), BMI = c(21, 26, 23, 19)
    )
    
    result <- df %>% group_by(sex) %>% do(model = glm(BP ~ age + sex + BMI, data = .))
    
    result$sex
    result$model
    
[/code]

> summary()を使用した結果もグループ別に見たい

`purrr` ライブラリの `map` を使う場合。

[code]

    library(purrr)
    
    result$model %>% map(summary)
    
[/code]

**追記**

> グループ別にモデルに出力は可能ですか

少し趣向が異なるかもしれませんが、`names()` でそれぞれに名前を付けることができます。

[code]

    names(result$model) = c("men", "women")
    result$model$men
    result$model$women
    
[/code]

