【发布时间】:2021-08-12 19:12:20
【问题描述】:
我正在尝试为 R 编写一个自定义函数,其中包含 dplyr 的元素。
第一部分进展顺利。我做了一个函数,value_count,它为指定数据框中的任何列创建频率分布表:
value_count = function(data, group_col) {
data %>%
group_by_(.dots = lazyeval::lazy(group_col)) %>%
summarize(count=n())
这是一个输出示例:
colour count
green 10
red 8
blue 2
现在,在同一个函数中,我想添加一个“百分比”列来计算选择每种颜色的人的百分比。像这样:
colour count percent
green 10 50
red 8 40
blue 2 10
为此,我尝试了这个功能:
value_count2 = function(data, group_col) {
data %>%
group_by_(.dots = lazyeval::lazy(group_col)) %>%
summarize(count=n()) %>%
mutate(percent = count/(sum(count)) * 100)
}
但我收到此错误:
"Error: Problem adding computed columns in `group_by()`.
x Problem with `mutate()` input `..1`.
我已经在创建函数之外对此进行了测试(即在同一数据集上手动执行group_by(group_col) %>% summarize(count=n()) %>% mutate(percent = count/(sum(count)) * 100))并且一切正常:-S
知道发生了什么吗?谢谢!
【问题讨论】: