我正在尝试为 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
知道发生了什么吗?谢谢!
由于带有_
(like group_by_
, count_
etc) 的函数已被弃用,您可以使用 -
library(dplyr)
value_count <- function(data, group_col) {
data %>%
count({{group_col}}, name = 'count') %>%
mutate(count = prop.table(count) * 100)
}
value_count(data, colour)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句