2016-01-16 12 views
6

summarise_each()を使用して、グループ化されたデータセットに複数の関数を適用したいとします。ただし、各関数をすべて列に適用するのではなく、各関数を特定のサブセットに適用したいと考えています。私はsummarise()で各列を指定することでこれを行うことができることを認識していますが、多くの変数があります。dplyr summarise_each()同じグループ内のさまざまな列サブセットに複数の関数を使用する

summarise_each()を使用して不要な列を削除するか、または2)group_by()の結果を保存し、複数の別々の操作を実行して結果を結合する代わりの方法がありますか?

これが明確でない場合はお知らせください。いくつかのサンプルコードを使って説明することができます。

+2

私はあなたが/持ってしようとしたサンプルデータ、サンプル出力、およびコードを示しますお勧めします。 – Gopala

+0

その場合、関心のある列をループし、 'lapply'を使って' summarize'を実行するか、関心のある列の対応する関数で 'Map'を使用してください。 – akrun

+0

あなたの質問については1)summarise_each()を使い、列をグループ化しない限り、 'summarise_each'内でどの列を使うべきではないかを指定することができます(ただし、列をグループ化しない限り出力の一部にはなりません)。 –

答えて

1

ここでは、1つの変数にmin関数を適用し、他の変数にmax関数を適用したいと考えています。次に、それらをグループ化変数とマージします。

> by_species <- iris %>% group_by(Species)  

私は分の機能を適用するための変数でスタート:

min_var < - by_species%>%summarise_each(低速運行(分)、Petal.Width) min_var 出典:ローカルデータフレーム[3×2]

 Species Petal.Width 
     (fctr)  (dbl) 
1  setosa   0.1 
2 versicolor   1.0 
3 virginica   1.4 

そしてIは、MAX関数を適用するための変数:

max_var < - by_species%>%summarise_each(低速運行(最大)、Sepal.Width) max_var 出典:ローカル・データ・フレーム[3×2]

 Species Sepal.Width 
     (fctr)  (dbl) 
1  setosa   4.4 
2 versicolor   3.4 
3 virginica   3.8 

今、私たちだけ

left_join(min_var、max_var) による接合:2以上をマージ "種" 出典:ローカルデータFRA私の[×3 3]

 Species Petal.Width Sepal.Width 
    (fctr)  (dbl)  (dbl) 
1  setosa   0.1   4.4 
2 versicolor   1.0   3.4 
3 virginica   1.4   3.8 
+0

ありがとうRushad。上記のオプション(2)で言及していたものですが、私が現在使用しているものですが、詳細な応答に感謝します。 –

関連する問題