3
我想一個group_by
呼叫內使用,,dplyr的列選擇像starts_with()
,ends_with()
,matches()
,......,甚至語法-colName
。複雜列選擇在dplyr GROUP_BY
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」,名稱(mtcars),val = TRUE)對名稱進行雙重調用' –
@PierreLafortune Right。把它給忘了。 – Psidom
非常感謝這兩個,我將這添加到我的方便功能! 'group_at < - function(df,pattern)group_by_(df,.dots = grep(names(df),pattern = pattern,value = T))' –