我想轻松选择几个列。请帮帮我。
现在我这样使用:
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()使用冒号?
答案 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