首页 文章

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

提问于
浏览
0

我想在我的数据集中为选择的分组变量生成很好的摘要,其中对于每个组,我将显示前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 回答

  • 1

    您应该使用 colnames(dat) 来获取正确的分组:

    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)
    
  • 1
    apply(mtcars[c(2:4,11)], 2, 
          function(x) { 
        mtcars %>%
        group_by(x= !!x) %>% 
          summarise(n=n()) %>% 
          mutate(pc=scales::percent(n/sum(n))) %>% 
          arrange(desc(n)) %>% head()
      }
    )
    

    你只需要父df进行评估

相关问题