2016-07-16 15 views
1

これまでのところ私は考えることができます(コードの同じ行に)dplyrでgroup_byを使用しているときに全体の統計情報を取得するにはどうすればよいですか?

を私はグループ全体で、いくつかの要約統計量を計算するdplyrを使用していますが、私はまた、すべてのデータに対して同じ統計情報を取得したいと思います:

aux.1 <- iris %>% 
group_by(Species) %>% 
summarise("stat1" = mean(Sepal.Length), 
      "stat2" = sum(Petal.Length)) 

aux.2 <- iris %>% 
summarise("stat1" = mean(Sepal.Length), 
      "stat2" = sum(Petal.Length)) 

とにかく、すべての統計情報を1行のコードで取得できますか?

答えて

2

次の2本の別々のdplyrチェーンを必要とするが、あなたはbind_rowsと一緒にすべてを置くことができます場合は

aux <- bind_rows(
    iris %>% 
    group_by(Species) %>% 
    summarise("stat1" = mean(Sepal.Length), 
       "stat2" = sum(Petal.Length)), 
    iris %>% 
    summarise("stat1" = mean(Sepal.Length), 
       "stat2" = sum(Petal.Length)) %>% 
    mutate(Species = "All") 
) 

aux 
 Species stat1 stat2 
1  setosa 5.006000 73.1 
2 versicolor 5.936000 213.0 
3 virginica 6.588000 277.6 
4  All 5.843333 563.7 
1

あなたはdata.tableパッケージを見てみに興味がある、この達成するのは簡単です:

library(data.table) 
# have to make a copy of the internal data.frame for testing 
irisTemp <- iris 
setDT(irisTemp) 

# calculate group statistics 
irisTemp[, c("meanVal", "sumVal") := .(mean(Sepal.Length), sum(Petal.Length)), 
     by="Species"] 

大きなデータセット用の効率的なライブラリです。

関連する問題