我希望在
以下是一个(傻瓜式)例子:
group_by
调用中使用dplyr的列选择器,例如starts_with()
、ends_with()
、matches()
等语法,甚至包括-colName
。以下是一个(傻瓜式)例子:
library("dplyr")
# I would like to do something like this
mtcars %>%
group_by(matches("a")) %>%
summarise(mpg=mean(mpg))
# but I get a "wrong result size" error
我希望它能够工作,类比于:
mtcars %>% select(matches("a"))
这里需要选择列:drat、am、gear、carb
明确一点:我想使用 matches("a")
(或等效代码)来达到与以下代码相同的输出:
mtcars %>%
group_by(drat, am, gear, carb) %>%
summarise(mpg=mean(mpg))
我只对使用dplyr的答案感兴趣。谢谢!
当前的答案虽然不错,但只允许使用正则表达式选择列。
我仍在寻找一个更全面的答案,它将允许使用dplyr的全部选择语法范围。当然,我可以调整任何正则表达式来选择我想要的内容,但我希望有一些更好地与dplyr集成的东西(尤其是使用 -colName
语法)。我会把这个问题保留一段时间。
grep("a", names(mtcars), val=TRUE)
来避免对名称进行双重调用。 - Pierre Lgroup_at <- function(df, pattern) group_by_(df, .dots=grep(names(df), pattern=pattern, value=T))
- asachet