Группировка по всем возможным комбинациям нескольких переменных с dplyr
Учитывая ситуацию, такую как следующее
library(dplyr)
myData <- tbl_df(data.frame( var1 = rnorm(100),
var2 = letters[1:3] %>%
sample(100, replace = TRUE) %>%
factor(),
var3 = LETTERS[1:3] %>%
sample(100, replace = TRUE) %>%
factor(),
var4 = month.abb[1:3] %>%
sample(100, replace = TRUE) %>%
factor()))
Я хотел бы сгруппировать myData, чтобы в итоге найти группировку сводных данных по всем возможным комбинациям var2, var3 и var4.
Я могу создать список со всеми возможными комбинациями переменных как символьные значения с
groupNames <- names(myData)[2:4]
myGroups <- Map(combn,
list(groupNames),
seq_along(groupNames),
simplify = FALSE) %>%
unlist(recursive = FALSE)
Я планировал сделать отдельные наборы данных для каждой комбинации переменных с циклом for (), что-то вроде
### This Does Not Work
for (i in 1:length(myGroups)){
assign( myGroups[i]%>%
unlist() %>%
paste0(collapse = "")%>%
paste0("Data"),
myData %>%
group_by_(lapply(myGroups[[i]], as.symbol)) %>%
summarise( n = length(var1),
avgVar2 = var2 %>%
mean()))
}
По общему признанию я не очень хорош со списками, и поиск этой проблемы был немного сложным, так как обновления dpyr изменили, как группировка работает немного.
Если есть лучший способ сделать это, чем отдельные наборы данных, я хотел бы знать.
Я получил цикл, аналогичный описанному выше, когда я группирую только по одной переменной.
Любая помощь очень ценится! Спасибо!