2016-10-19 3 views
1

Я хочу выбрать несколько столбцов легко. пожалуйста помогите.выберите несколько столбцов use__ru в dplyr

Теперь я использую как это:

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) 

выберите() можно использовать двоеточие (:), чтобы выбрать колонку, но почему group_by() использовать двоеточие?

+0

Попробуйте следующее: 'library (dplyr); iris%>% group_by (Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) 'OR' dplyr :: group_by (iris, Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) '. Обратите внимание на разницу?, В первом случае мы начнем с набора данных и попробуем group_by без имени набора данных в качестве ввода, тогда как во втором подходе нам потребуется имя набора данных в качестве входных данных. Надеюсь, это поможет и заметьте, что 1) группировка со всеми переменными в наборе данных имеет мало смысла; 2) передавать переменные, которые вы можете использовать 'все()' вместо перечисления переменных – OdeToMyFiddle

+0

ваш подход с ':' возможен для 'dplyr: select () ', например 'select (iris, Sepal.Length: Petal.Width)', но не для 'group_by()' –

+0

Я полагаю, что 'group_by' не позволяет вам делать это, потому что обычно не группируется более чем на две или три переменные , –

ответ

1

Вы можете выполнить что-то подобное с помощью версии *_, хотя для получения правильных значений может потребоваться больше информации. Здесь вы хотите первые четыре столбца, так что это должно работать:

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

Это ответ на ваш вопрос, или есть какая-то часть, которая все еще отсутствует, препятствуя вам принять ответ? –

Смежные вопросы