在dplyr中选择几个列使用group_by

时间:2016-10-19 14:49:50

标签: r select group-by dplyr

我想轻松选择几个列。请帮帮我。

现在我这样使用:

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

我希望像这样使用。但目前的错误:

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

select()可以选择列使用冒号(:)     dplyr ::选择(Sepal.Length:Petal.Width)

但是group_by()不能使用冒号(:)

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

select()可以使用冒号(:)来选择列, 但为什么group_by()使用冒号?

1 个答案:

答案 0 :(得分: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