在apply中的函数中使用dplyr :: group_by

时间:2018-07-10 10:15:57

标签: r dplyr apply non-standard-evaluation

我想为我的数据集中的一组分组变量生成漂亮的摘要,其中对于每个组,我将显示前6个频率及其相关比例。我可以使用以下语法将其用于单个分组变量:

my_db %>% 
group_by(my_var) %>% 
summarise(n=n()) %>% 
mutate(pc=scales::percent(n/sum(n))) %>% 
arrange(desc(n)) %>% 
head()

我如何修改此表达式以便可以在apply函数中使用?

例如,使用mtcars,我已经尝试过类似的事情:

apply(mtcars[c(2:4,11)], 2, 
   function(x) {
    group_by(!!x) %>% 
      summarise(n=n()) %>% 
      mutate(pc=scales::percent(n/sum(n))) %>% 
      arrange(desc(n)) %>% head()
      }
    )

但是它不起作用。知道我如何实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

您应该使用var style = [{ "stylers": [{ }] }]; 申请以获取正确的分组:

colnames(dat)

答案 1 :(得分:1)

dat <- mtcars[c(2:4,11)]



grp <- function(x) {
  group_by(dat,!!as.name(x)) %>%
  summarise(n=n()) %>% 
  mutate(pc=scales::percent(n/sum(n))) %>% 
  arrange(desc(n)) %>% head()
}


lapply(colnames(dat), grp)

您只需要父级df进行评估

相关问题