1

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

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

我如何修改这个表达式,以便它可以在应用函数中使用?

例如使用 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()
      }
    )

但它不起作用。知道我怎么能做到这一点吗?

4

2 回答 2

3

您应该使用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)
于 2018-07-10T10:47:42.477 回答
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 来评估

于 2018-07-10T10:47:51.850 回答