3

dplyr を使用して と の平均の差を計算し、3 番目の変数でグループ化する方法を知っている人はいsome_var == TRUEますsome_var == FALSEか?

たとえば、次のデータフレームの例があるとします。

library('dplyr')

dat <- iris %>% 
     mutate(wide=Sepal.Width > 3) %>% 
     group_by(Species, wide) %>% 
     summarize(mean_width=mean(Sepal.Width))

dat

# A tibble: 6 x 3
# Groups:   Species [?]
     Species  wide mean_width
      <fctr> <lgl>      <dbl>
1     setosa FALSE   2.900000
2     setosa  TRUE   3.528571
3 versicolor FALSE   2.688095
4 versicolor  TRUE   3.200000
5  virginica FALSE   2.800000
6  virginica  TRUE   3.311765

wide == TRUE種ごとにとの違いを持つ新しいデータ フレームを導出する方法を知っている人はいますwide == FALSEか?

これは、いくつかのステートメントを使用して行うことができます。

false_vals <- dat %>% filter(wide==FALSE)
true_vals <- dat %>% filter(wide==TRUE)

diff <- data.frame(Species=unique(dat$Species), diff=true_vals$mean_width - false_vals$mean_width)

> diff
     Species      diff
1     setosa 0.6285714
2 versicolor 0.5119048
3  virginica 0.5117647

ただし、これは dplyr で直接達成できるはずです。

何か案は?

4

2 に答える 2