有没有办法在自定义函数中包含dplyr count()函数

时间:2019-10-31 20:18:26

标签: r function dplyr count

我需要为报表的数据帧中的每一列创建一个比例表,并且正在尝试为此创建一个函数,而不是为每个变量运行完整的代码。我一直在使用dplyr count()和prop.table()命令创建表。我使用过时的count_()命令创建了一个工作函数,但无法使该函数与新的unquote dplyr命令一起工作。

我已经用mtcars数据复制了问题

data("mtcars")
library(tidyr)
library(dplyr)

test<-function(x,q){
  test_table<-x %>% 
    drop_na(q) %>%
    count_(q)%>%
    mutate(pct = prop.table(n))
  return(test_table)
}
test(mtcars, "cyl")

此代码返回我想要的表:

# A tibble: 3 x 3
    cyl     n   pct
  <dbl> <int> <dbl>
1     4    11 0.344
2     6     7 0.219
3     8    14 0.438

但是由于不建议使用count_,所以我宁愿使用count()。我还希望能够更改fist列的名称,我相信count()会支持该列,但count_()不会支持

我尝试过:

test<-function(x,q){
  test_table<-x %>% 
    drop_na(q) %>%
    count_(!!q)%>%
    mutate(pct = prop.table(n))
  return(test_table)
}

test(mtcars, "cyl")

但这不会将变量分组并返回

# A tibble: 1 x 3
  `"cyl"`     n   pct
  <chr>   <int> <dbl>
1 cyl        32     1

有没有一种方法可以不使用count_()来获得第一个表?

0 个答案:

没有答案