2016-10-19 11 views
1

複数の列を簡単に選択したい。私を助けてください。私はこのような使用を願っていいくつかの列を選択するdplyrでgroup_byを使用

dplyr::group_by(iris, Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) 

今、私はこのように使用します。しかし、現在のエラー:

dplyr::group_by(iris, Sepal.Length:Petal.Width) 

選択()列の使用コロン(:) dplyr ::選択(Sepal.Length選択することができます。Petal.Width)

しかしGROUP_BYを()ことはできない列の使用コロン(: )

dplyr::group_by(iris, Sepal.Length:Petal.Width) 

は、select()列、 を選択するために、コロン(:)を使用することができますが、なぜGROUP_BY()コロンを使うのか?それが右の値を取得するには、もう少し考えて取るかもしれませんが

+0

次のようにしてください: 'library(dplyr);アイリス%>%GROUP_BY(Sepal.Length、Sepal.Width、Petal.Length、Petal.Width) 'や' dplyr :: GROUP_BY(アイリス、Sepal.Length、Sepal.Width、Petal.Length、Petal.Width) '。最初のケースでは、データセットで始まり、データセットの名前を入力せずにgroup_byを試していますが、2番目のアプローチでは、入力としてデータセット名が必要です。あなたの代わりに変数をリストアップ – OdeToMyFiddle

+0

あなたのアプローチを 'との' 'すべてを()を使用することができ、この情報がお役に立てば幸いと変数を渡すために)データセット内のすべての変数をグループ化1)はほとんど意味2になりますのでご注意:' dplyr '可能である:(選択) '、例えば'選択(アイリス、Sepal.Length:Petal.Width)'ではなく、ために 'GROUP_BY()' –

+0

私はgroup_by'は1が2つのまたは3つ以上の変数によって、通常のグループではないだろうので、あなたが、とにかくこれを行うことはできません '想像します。 –

答えて

1

あなたは、*_バージョンを使用して似たような達成することができます。ここでは、最初の4つの列をしたいので、これは動作するはずです:

iris %>% group_by_(.dots = names(.)[1:4]) 

ショー:あなたも、より多くの制御を与えるだろう

Source: local data frame [150 x 5] 
Groups: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width [149] 

    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
      <dbl>  <dbl>  <dbl>  <dbl> <fctr> 
1   5.1   3.5   1.4   0.2 setosa 
2   4.9   3.0   1.4   0.2 setosa 

それはおそらく最初の列名を保存するために、より良い仕事と、たとえば、

colsToSave <- names(iris)[1:4] 

iris %>% group_by_(.dots = colsToSave) 

同じ結果が得られますが、独自の範囲を設定することもできます。 selectを使用して、必要な列に生成してから、名前を保存することもできますが、それはおそらく過剰です。

colsToSave <- iris %>% select(Sepal.Length:Petal.Width) %>% names 
+0

ありがとうございます。 – ogw

+0

それはあなたの質問に答えましたか、それともあなたが答えを受け入れるのを妨げるいくつかの部分がまだありますか? –

関連する問題