summary.default()
data.frame の変数に対して(基本パッケージで) 数値集計を実行し、broom パッケージで tidy() を使用したいのですが、これはどういうわけか失敗します。
この例では、data.frame を作成します。
df <- data.frame(group = c(rep('M', 6), 'F', 'F', 'M', 'M', 'F', 'F'),
val = c(6, 5, NA, NA, 6, 13, NA, 8, 10, 7, 14, 6))
plyr
(1.8.3)、dplyr
(0.4.2)、broom
(0.3.7) を (この順序で)ロードします。参考までに、64 ビット Windows で R 3.2.2 を実行していますが、Unix の 3.2.1 でも同様の問題が発生します。
これにより、望ましい出力が得られると思います。
df %>% group_by(group) %>% do(tidy(summary(.$val)))
しかし、エラーメッセージが表示されます:
Error: corrupt data frame at index 1
以下に示すように、plyr
アプローチを使用して望ましいものを得ることができます。broom::tidy
df %>% group_by(group) %>% do(summ = summary(.$val)) %>%
daply(.(group), function(x) tidy(x$summ[[1]]))
group minimum q1 median mean q3 maximum <NA>
F 6 7 8 9.333 11 14 1
M 5 6 6.5 7.833 9.25 13 2
しかし、明らかに、上記のようtidy()
に関数内で (summaryDefault)を使用することに関する問題の根本に到達するために、この質問をしています。do()