1

dofromdplyrtidyfromを使用して、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))))

ただし、単一のパイプソリューションを探しています(可能であれば)。

4

2 に答える 2