我需要多次重复一次操作以获得两个不同变量的不同组合(尝试为显示百分比的堆积条形图创建数据。任何人都可以将下面的代码转换为一个函数(数据集,以及两个变量x和y) )为了快速创建新的数据集?或者给我一些很好的参考或链接来学习函数和dplyr。谢谢。
dat = df %>%
select(x, y) %>%
group_by(x, y) %>%
summarise(n = n()) %>%
mutate(percentage = round(n/sum(n)*100, 1)) %>%
ungroup() %>%
group_by(x) %>%
mutate(pos = cumsum(percentage) - (0.5 * percentage)) %>%
ungroup()
return(dat)
答案 0 :(得分:1)
正如上面的评论所示,可以在此处找到分步说明:dplyr.tidyverse.org/articles/programming.html
本指南将提供quo()
函数和!!
符号的说明。
对于您的示例,您可以创建如下函数:
df1<- data.frame(x1 = c(rep(3,5), rep(7,2)),
y1 = c(rep(2,4), rep(5,3)))
my.summary <- function(df, x, y){
df %>%
select(!!x, !!y) %>%
group_by(!!x, !!y) %>%
summarise(n = n()) %>%
mutate(percentage = round(n/sum(n)*100, 1)) %>%
ungroup() %>%
group_by(!!x) %>%
mutate(pos = cumsum(percentage) - (0.5 * percentage)) %>%
ungroup()
}
my.summary(df1, quo(x1), quo(y1))
# # A tibble: 3 x 5
# x1 y1 n percentage pos
# <dbl> <dbl> <int> <dbl> <dbl>
# 1 3 2 4 80 40
# 2 3 5 1 20 90
# 3 7 5 2 100 50