带有 dplyr 的 R 中的自定义函数

自由职业者联盟

我正在尝试为 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在R中创建自定义dplyr数据转换函数

R:循环自定义dplyr函数

R中带有dplyr的pmin()

R中带有向量和矩阵的自定义函数

带有 dplyr 函数的自定义函数不接受参数值

R dplyr:使用自定义函数的行明智操作

在R包中定义自定义dplyr方法

将带有条件的自定义函数传递给 dplyr::mutate

dplyr的每列突变分别带有几个参数的自定义函数

带有 seq() 的 R dplyr

在R:子集或dplyr :: filter中,带有来自矢量的变量

带有 dplyr 的 R 中的交叉表/表格

在R中的自定义函数中以数据框和列为参数对dplyr中的分组数据使用mutate

使用带有 ggplot2、dplyr 和 forcats 的自定义函数绘制降频条形图

带有dplyr的自定义函数会针对某个因素内的不同级别进行突变或汇总?

在 R 中使用带有自定义函数的 apply 删除 for 循环

R dplyr 带有多个常量列

带有 dplyr 动词的函数中的 if 语句

在 R 中优化具有多个参数的自定义函数

如何在R中输入具有多个data.frames的自定义函数?

R中的自定义查找功能在R中的dplyr :: mutate中不起作用

R绘制带有自定义系数的图表

带有自定义线型的R条多线图

带有R传单的自定义图例

在R中使用dplyr在group_by之后应用自定义函数

R-将向量传递给自定义函数至dplyr :: mutate

为什么R dplyr :: mutate与自定义函数不一致

r-如何在使用dplyr的自定义函数上使用迭代

从带有参数的自定义文件中调用函数