我需要为报表的数据帧中的每一列创建一个比例表,并且正在尝试为此创建一个函数,而不是为每个变量运行完整的代码。我一直在使用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_()来获得第一个表?