2017-10-16 20 views
1

と長い形式を作成するdplyr機能私はこのコードを取得し、機能にそれを回すためにしようとしている:R:複数のグループ

mtcars %>% group_by(gear) %>% select(hp, disp) %>% 
summarise_all(funs(n=sum(!is.na(.)), mean=mean(.,na.rm=T))) %>% 
gather(variable, value, -gear) %>% 
arrange(gear, sub('_.*', '', variable), sub('.*_', '', variable)) %>% 
separate(variable, into = c('var', 'metric'), '_') 

それは何を私が簡単にExcelにインポートすることができますデータフレームを作成していますでピボットを作成します。私は、次のことを試してみたが、動作していないよう:問題はgather声明に沿ってどこかですが、私がここで間違っている可能性が何か分からないよう

mean_func <- function(vars,groups) { 
    results <- test %>% group_by_at(vars(one_of(groups))) %>% 
    summarise_at(vars(starts_with(vars)), funs(n=sum(!is.na(.)), mean=mean(.,na.rm=T))) %>% 
    gather_(variable, value, -groups) %>% 
    arrange_(groups) %>% 
    separate_(variable, into = c('var', 'metric'), '_'); View(results) 
} 

は思えます。何かご意見は?

+2

これは逆のようです。 Rにデータを取り込んでピボットテーブルを作るためにエクスポートするだけの理由は何ですか?どのような場合でも、dplyr/tidyr動詞によるプログラミングが変更されました。参照:http://dplyr.tidyverse.org/articles/programming.html – boshek

+0

ユーザーオーディエンスはピボットテーブルを必要とするため、データを簡単に操作して閲覧することができます。それは私の呼び出しではない、または私はすべてのプロットを作るだろう。 – vashts85

答えて

1

tidyクリーンアップを使用してグループ化変数を変更し、プログラミングにgroup_by_を使用します。

library(tidyverse) 

mean_func <- function(vars, groups) { 
    groups = enquo(groups) 

    vars %>% 
     group_by_(groups) %>% 
     dplyr::select(hp, disp) %>% 
     summarise_all(funs(n=sum(!is.na(.)), mean=mean(.,na.rm=T))) %>% 
     gather(variable, value, -!!groups) %>% 
     arrange(!!groups, sub('_.*', '', variable), sub('.*_', '', variable)) %>% 
     separate(variable, into = c('var', 'metric'), '_') 
} 
mean_func(mtcars, gear)