do
fromdplyr
とtidy
fromを使用して、broom
いくつかのものをデータ フレームにきちんと整理しようとしています。すべて正常に動作します。しかし、今、同じパイプ内のグループ化に基づいて値を変更しようとしていますが、私が望むように機能させることはできません:
例 (mtcars
データセットあり):
library(dplyr)
library(broom)
mtcars %>% group_by(cyl) %>% mutate(n = n()) %>% do(tidy(summary(.$mpg)))
summary
途中で計算した観測の数とともに、cyl ごとの出力を得たいと思っていました。ただし、summary
次のような出力しか得られません。
Source: local data frame [3 x 7]
Groups: cyl [3]
cyl minimum q1 median mean q3 maximum
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4 21.4 22.80 26.0 26.66 30.40 33.9
2 6 17.8 18.65 19.7 19.74 21.00 21.4
3 8 10.4 14.40 15.2 15.10 16.25 19.2
出力値n
がありません。
また、次のように試しbind_cols
てみinner_join
ましたが、どちらも以下に示すエラーが発生します。
mtcars %>% group_by(cyl) %>% mutate(mpgMean = mean(mpg)) %>% inner_join(., do(tidy(summary(.$mpg))))
Error in args[[1]] : subscript out of bounds
mtcars %>% group_by(cyl) %>% mutate(n = n()) %>% bind_cols(do(tidy(summary(.$mpg))))
Error in args[[1]] : subscript out of bounds
どうすればこれを機能させることができますか?
私の予想される出力は次のとおりです。
Joining by: "cyl"
Source: local data frame [3 x 8]
cyl n minimum q1 median mean q3 maximum
<dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4 11 21.4 22.80 26.0 26.66 30.40 33.9
2 6 7 17.8 18.65 19.7 19.74 21.00 21.4
3 8 14 10.4 14.40 15.2 15.10 16.25 19.2
もちろん、これを行うとこの結果を得ることができます:
inner_join(count(mtcars, cyl), mtcars %>% group_by(cyl) %>% do(tidy(summary(.$mpg))))
ただし、単一のパイプソリューションを探しています(可能であれば)。